R Field - xnrjjsb虚拟软件及设备
type: channel
link: http://www.ramlife.org/tag/xnrjjsb/
items: yahboom rosmaster x3, 机器人底盘与控制 学习笔记
items: yahboom rosmaster x3, ROS2基础教程 学习笔记
items: yahboom rosmaster x3, 入手笔记
items: virtualbox 增大空间
items: win server 2008 虚拟机
items: 查看 docker 中 android log
items: docker 查看具体从哪个脚本启动服务
items: ubuntu 使用 docker
items: ubuntu 安装 docker
items: gentoo virtual couldnt download

yahboom rosmaster x3, 机器人底盘与控制 学习笔记
type: item
date: 2023-05-21T09:30:00+08:00
description: 机器人信息发布 代码 /root/yahboomcar_ros2_ws/yahboomcar_ws/src/yahboomcar_bringup/yahboomcar_bringup/Mcnamu_driver_X3.py #create subcriber self.sub_cmd_vel = self.create_subscription(Twist,"cmd_vel",self.cmd_vel_callback,1) self.sub_RGBLight = self.create_subscription(Int32,"RGBLight",self.RGBLightcallback,100) self.sub_BUzzer = self.create_subscription(Bool,"Buzzer",self.Buzzercallback,100) #create publisher self.EdiPublisher = self.create_publisher(Float32,"edition",100) self.volPublisher = self.create_publisher(Float32,"voltage",100) self.staPublisher = self.create_publisher(JointState,"joint_states",100) self.velPublisher = self.create_publisher(Twist,"vel_raw",50) self.imuPublisher = self.create_publisher(Imu,"/imu/data_raw",100) self.magPublisher = self.create_publisher(MagneticField,"/imu/mag",100) #create timer self.timer = self.create_timer(0.1, self.pub_data) ros2 run yahboomcar_bringup Mcnamu_driver_X3 ros2 topic list 话题名字 话题内容 /Buzzer 蜂鸣器 /RGBLight 灯带效果控制 /cmd_vel 速度控制 /edition 版本信息 /imu/data_raw IMU传感器数据 /imu/mag IMU-磁力计数据 /vel_raw 小车速度信息 /voltage 电池电压信息 ros2 topic echo /voltage 读取电压数据 运动 ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.2}}" , 停止 ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}" 机器人控制 代码在 /root/yahboomcar_ros2_ws/yahboomcar_ws/src/yahboomcar_ctrl/yahboomcar_ctrl/yahboo m_keyboard.py def getKey(self): tty.setraw(sys.stdin.fileno()) rlist, _, _ = select.select([sys.stdin], [], [], 0.1) if rlist: key = sys.stdin.read(1) else: key = '' termios.tcsetattr(sys.stdin, termios.TCSADRAIN, self.settings) return key ros2 run yahboomcar_bringup Mcnamu_driver_X3 ros2 run yahboomcar_ctrl yahboom_keyboard 键盘控制程序 节点通信图 ros2 run rqt_graph rqt_graph : 机器人状态估计 代码 /root/yahboomcar_ros2_ws/yahboomcar_ws/src/yahboomcar_bringup/launch/yahboomcar_bringup_X3_launch.py 和 /root/yahboomcar_ros2_ws/software/library_ws/src/robot_localization/…

yahboom rosmaster x3, ROS2基础教程 学习笔记
type: item
date: 2023-05-14T08:45:00+08:00
description: 工作空间 创建工作空间 cd yahboomcar_ros2_ws mkdir -p yahboomcar_ws_ptz/src cd yahboomcar_ws_ptz 编译工作空间 colcon build source install/setup.bash echo "source ~/yahboomcar_ros2_ws/yahboomcar_ws/install/setup.bash" >> ~/.bashrc ROS2 功能包 创建功能包命令 ros2 pkg create <package_name> --build-type <build-type> --dependencies <dependencies> --node-name <node-name> cpp, ros2 pkg create pkg_helloworld_cpp --build-type ament_cmake --dependencies rclcpp --node-name helloworld py, ros2 pkg create pkg_helloworld_py --build-type ament_python --dependencies rclpy --node-name helloworld 功能包简单流程 cd ~/yahboomcar_ros2_ws/yahboomcar_ws/src ros2 pkg create pkg_helloworld_py --build-type ament_python --dependencies rclpy --node-name helloworld cd ~/yahboomcar_ros2_ws/yahboomcar_ws colcon build --packages-select pkg_helloworld_py source install/setup.bash ros2 run pkg_helloworld_py helloworld 自动生成的 helloworld.py 中，main 里面只有一条 print, 所以运行的时候，也只打印了一条字符串。 ros2 节点 把 helloworld.py 中引入 rclpy 的节点，再使用 logger 打印，然后 build, source, run，就可以看到循环打印了。 import rclpy # ROS2 Python接口库 from rclpy.node import Node # ROS2 节点类 import time """ 创建一个HelloWorld节点, 初始化时输出“hello world”日志 """ class HelloWorldNode(Node): def __init__(self, name): super().__init__(name) # ROS2节点父类初始化 while rclpy.ok(): # ROS2系统是否正常运行 self.get_logger().info("Hello World") # ROS2日志输出 time.sleep(0.5) # 休眠控制循环时间 def main(args=None): # ROS2节点主入口main函数 rclpy.init(args=args) # ROS2 Python接口初始化 node = HelloWorldNode("helloworld") # 创建ROS2节点对象并进行初始化 rclpy.spin(node) # 循环等待ROS2退出 node.destroy_node() # 销毁节点对象 rclpy.shutdown() # 关闭ROS2 Python接口 import rclpy from rclpy.node import Node 开关 ros2 接口，rclpy.init(args=args) rclpy.shutdown() 创建和销毁节点，node = HelloWorldNode("helloworld") node.destroy_node() 等待节点退出，rclpy.spin(node) 日志输出 self.get_logger().info("Hello World") 检查 rclpy 正常， while rclpy.ok() ros2 话题通信 publish #导入rclpy库 import rclpy from rclpy.node import Node #导入String字符串消息 from std_msgs.msg import String #创建一个继承于Node基类的Topic_Pub节点子类 传入一个参数name class Topic_Pub(Node): …

yahboom rosmaster x3, 入手笔记
type: item
date: 2023-05-13T09:35:00+08:00
description: 网络连接 电脑和手机，都需要连接到小车的 wifi 上面。 ROSMASTER：123456 静态 ip 小车关掉热点，连接上 wifi 路由器设置为固定 ip， 路由器重启 小车重启。 遥控测试 需要拔掉语音板，才可以进行测试。 开机大程序 临时关: 直接关闭终端即可。 临时开: python3 ~/Rosmaster-App/rosmaster/rosmaster_main.py 永久关: Startup Applications -> start_rosmaster_app, 去掉勾 永久开: Startup Applications -> start_rosmaster_app, 打勾 ssh 小车 jetson: yahboom 虚拟机 yahboom: yahboom vnc 如果是小车热点那无所谓，如果小车是连接 wifi，那么需要在小车上右上角 : settings -> sharing -> screen sharing , 然后启用对应 wifi 即可。 vnc 软件直接用就行了~ docker 常用命令 docker images, 查看镜像 docker ps -a， 查看容器运行状态 docker run -it yahboomtechnology/ros-foxy:4.0.5 /bin/bash ，启动 docker docker attach 容器id , 进入正在运行的容器 exit , 停止并退出容器 ctrl-P+Q, 不停止退出容器 docker start/restart/stop/kill docker rm 容器id , 删除指定容器 docker image inspect 镜像名称 , 查看镜像分层 硬件设备，带入 docker, 用 ll /dev 来查看，是有 myserial和rplidar docker run -it --device=/dev/myserial --device=/dev/rplidar yahboomtechnology/ros-foxy:4.0.5 /bin/bash ll /dev | grep ttyUSB* 带 gui 显示 ，必须 vnc 才行，ssh 不行。 docker run -it --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" -v /tmp/.X11-unix:/tmp/.X11-unix yahboomtechnology/ros-foxy:4.0.5 /bin/bash 传文件 docker cp c54bf9efae47:/root/test.txt ~/ ， 容器 -> 宿主机 docker cp 11.txt c54bf9efae47:/root/ ， 宿主机 -> 容器 映射宿主机的可读写文件夹 docker run -it -v /home/jetson/temp:/root/temp yahboomtechnology/ros-foxy:4.0.5 /bin/bash 外设 查看 ll /dev | grep ttyUSB* ， 查看 usb 设备 ll /dev/astra* , 查看 astrapro plus 相机 编辑 根据 astra 相机的 bus ，修改 run_docker.sh 中对应的 bus 那两行。 默认的外设启动文件，需要 vnc 连接小车后。 ./run_docker.sh rviz2 进入 docker 多终端进入同一个 docker docker run -it yahboomtechnology/ros-foxy:4.0.5 /bin/bash docker ps -a docker exec -it 79493183bdb2 /bin/bash ctrl-P+Q 开启 exited 容器 见 07、Docker\5、进入机器人的docker容器 机器人开发环境 jupyter lab, 必须 --net=host docker run -it --net=host yahboomtechnology/ros-foxy:4.0.5 /bin/bash jupyter lab --allow-root 浏览器 http://192.168.0.110:8888/lab , 输入密码：yahboom, 路径: /root/yahboomcar_ros2_ws/ vscode ssh 安装插件 remote development 顶部选择 show and run command remote-ssh 选择 add new ssh ssh jetson@192.168.0.110 选择 .ssh/config connect linux, con…

virtualbox 增大空间
type: item
date: 2022-05-02T08:57:00+08:00
description: virtual box 设置加大空间 管理 -> 虚拟介质管理，把里面的硬盘空间拉大。 linux 分配加大的空间 sudo apt install gparted 安装分区工具 打开分区工具，在 extened 上面右键选择 resize，然后把剩余的容量全部加上去。 在 /dev/sda5 上面右键选择 resize，然后把剩余的容量全部加上去。 点击工具栏的勾，就可以执行扩容了。 df -h 检查一下容量对不对。 参考： 为VirtualBox下Linux-Ubuntu虚拟机增加虚拟硬盘容量（傻瓜化操作，全程UI下完成） https://www.cnblogs.com/r0xFED/p/12121724.html

win server 2008 虚拟机
type: item
date: 2022-04-30T18:51:00+08:00
description: 参考: server2008r2激活密钥|winserver2008r2密钥|windows server 2008r2产品密钥 http://www.xitongcheng.com/jiaocheng/dnrj_article_46791.html 虚拟机怎么发送ctrl+alt+delete组合键 https://www.cnblogs.com/yangcx666/p/8723782.html

查看 docker 中 android log
type: item
date: 2021-08-16T17:31:00+08:00
description: 有两种方法。 1. 进入容器 docker ps docker exec -it instance15 sh logcat 2. 不进入容器 docker ps adb connect localhost:5987 logcat 3. 也可以把 log 写入文件，再把文件读取出来 docker ps docker exec -it instance15 sh logcat >log.txt exit adb connect localhost:5987 adb -s localhost:5987 pull log.txt . 4. 还可以这样 docker logs --since 5m 00363a3b96d6

docker 查看具体从哪个脚本启动服务
type: item
date: 2021-08-13T19:29:00+08:00
description: 使用 systemctl status docker 查看 load 哪一行，就可以知道到底是从哪个脚本启动服务了。 参考 https://www.cnblogs.com/ooops/p/12886815.html

ubuntu 使用 docker
type: item
date: 2020-09-24T14:15:00+08:00
description: 今天先参照 https://www.jianshu.com/p/ddf7c0153644 这个里面的说明写了相应的配置文件，结果一启动容器就报错了。 Creating docker-test_mysql_1 ... Creating docker-test_mysql_1 ... error ERROR: for docker-test_mysql_1 Cannot start service mysql: driver failed programming external connectivity on endpoint docker-test_mysql_1 (22e74af6dece7dd4cae19aa8809099c6fde961e19f6b43178bb34a595e1c5a02): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use ERROR: for mysql Cannot start service mysql: driver failed programming external connectivity on endpoint docker-test_mysql_1 (22e74af6dece7dd4cae19aa8809099c6fde961e19f6b43178bb34a595e1c5a02): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use ERROR: Encountered errors while bringing up the project. 参考 https://www.cnblogs.com/loovelj/p/7823093.html 这个里面的做法，首先查看是否本机的 mysql 占用了端口。 netstat -tunlp | grep 3306 确定是本机的 mysql，就停止服务。 service mysql stop 然后通过 ps -ef|grep mysqld 可以发现 mysql 已经停止了。然后重新使用 docker-compose up -d 启动容器，这下就不报错了。 使用 docker ps 来查看容易的状态属性，id 和 names 这两个值都可以用来指定容器。 docker exec -it docker-test_mysql_1 bash docker exec -it f24473a1626a bash 上面这两条命令分别用 name 和 id 来指定容器执行 bash 命令，效果是一样的。这样就进入了容器的命令行。 停止 docker docker-compose stop 删除 docker docker rm docker-test_mysql_1 docker 中使用 mysql 的时候，init 文件夹下面的 sql, sh, sql.gz 这些文件会被遍历，然后执行，但是执行顺序没有办法保证，所以想要按照一定顺序执行，只能通过 sh 脚本来编写处理过程， 具体参考：https://blog.csdn.net/boling_cavalry/article/details/71055159 在 init 脚本中 mysql -uroot -p$MYSQL_ROOT_PASSWORD <<EOF 注意 -p 后面不要有空格，否则可能不能以 root 登录 mysql； 不要忘了给 init 脚本所有人可执行权限，因为只有 db 对应的文件夹是 mysql的，其他的文件夹都是 1000：1000，可能导致执行权限问题。 在 init 脚本中，mysql 命令里面创建用户的时候，密码必须有单引号，因为用了单引号，变量外面就必须有大括号，才能保证正确。 create user '${MYSQL_USER}'@'localhost' IDENTIFIED BY '${MYSQL_PASS}'; 在mysql 中使用 root 登录的时候，通过命令 select * from mysql.user 来查看有哪些用户。 GRANT ALL PRIVILEGES ON 数据库名.表名 TO '$user1'@'%' IDENTIFIED BY '$password1' REQUIRE X509; GRANT SELECT,INSERT,ALTER,UPDATE,DELETE ON iot_ny.* TO 'Iothui'@'localhost'; 可以用这些命令给用户赋权。 搜索可以用哪些镜像，可以去 https://h…

ubuntu 安装 docker
type: item
date: 2020-09-24T14:02:00+08:00
description: 没有安装过 docker 的 ubuntu 安装 docker的步骤: $ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common 如果选择官方的源: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - apt-key fingerprint 0EBFCD88 如果选择阿里的源： sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - sudo apt-key fingerprint 0EBFCD88 添加官方仓库： sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" 添加阿里仓库： sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io apt-cache madison docker-ce 从上面输出的版本中找到你需要的版本: sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io 如果这里报错，可以尝试这个命令，我用这个命令进行安装就没有问题: sudo apt-get -y install docker-ce=[VERSION] sudo docker run hello-world sudo gpasswd -a 用户名 docker sudo service docker restart newgrp - docker 安装 docker-compose，先去 https://github.com/docker/compose/releases 找到你需要的版本，然后替换下面的 1.24.1 这个版本号，我用的是 1.27.3 : sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker-compose --version 参考: https://docs.docker.com/engine/install/ubuntu/ https://www.cnblogs.com/walker-lin/p/11214127.html https://www.runoob.com/docker/docker-compose.html https://blog.csdn.net/liqi_q/article/details/83030737 https://www.cnblogs.com/grow1016/p/11533645.html

gentoo virtual couldnt download
type: item
date: 2019-04-27T22:13:00+08:00
description: 今天在更新系统的时候，提示 virtualbox-bin 从原始地址下载不了，经过一番摸索，通过下面的方式即可正常安装。 http://download.virtualbox.org/virtualbox/5.2.26/ 通过 上面这个网址找到你要下载的 virtualbox 版本， 选择后缀 .amd64.run 的来下载。下载可以使用 aria2c 来下载，下载完成之后，把 run 文件放入 /usr/portage/distfiles 文件夹即可。 再次安装，提示下载 pack 失败，从上面网页找到 Oracle_VM_VirtualBox_Extension_Pack-5.2.26-128414.vbox-extpack 类似这个下载下来。然后把文件名修改，去掉 vbox-extpack, 增加 tar.gz，变成 Oracle_VM_VirtualBox_Extension_Pack-5.2.26-128414.tar.gz，这个文件也放入到 /usr/portage/distfiles 即可。 这样再次安装就没有问题了。