概述
问题1:roscore到底是什么,什么情况下必须先运行roscore
ERROR: Unable to communicate with master!
这是不运行roscore就rosnode list的下场。
但是小强机器人的远程链接
ssh xiaoqiang@xxx.xxx.xxx.xxx
这条指令一旦执行,就相当于运行了一个roscore,rostopic list和rosnode list就都直接能用了
问题二:复习一下以前的指令
参考:ros教程
节点http://wiki.ros.org/cn/ROS/Tutorials/UnderstandingNodes
话题http://wiki.ros.org/cn/ROS/Tutorials/UnderstandingTopics
rosrun [package_name] [node_name]作用: rosrun 允许你使用包名直接运行一个包内的节点(而不需要知道这个包的路径)
rostopic echo [topic]作用:可以显示在某个话题上发布的数据。
问题三:为什么视频传输不需要先建立远程链接
我想原因可能在于这句话
export ROS_MASTER_URI=http://xiaoqiang-desktop:11311 很重要
之前我们在我们电脑的/etc/hosts 文件内添加小强的 ip
192.168.X.X xiaoqiang-desktop
这样只要这句话一执行就相当于已经远程遥控了。
当我们在尝试使用rostopic list和rosnode list时,均可顺利执行,说明已经链接到小强。
实验表明这种方式和ssh方式的rostopic list和rosnode list看到的话题和节点是完全一样的
话题
/ORB_SLAM/Camera
/ORB_SLAM/Frame
/barDetectFlag
/camera_node/camera_info
/camera_node/image_raw
/camera_node/image_raw/compressed
/camera_node/image_raw/compressed/parameter_descriptions
/camera_node/image_raw/compressed/parameter_updates
/camera_node/image_raw/compressedDepth
/camera_node/image_raw/compressedDepth/parameter_descriptions
/camera_node/image_raw/compressedDepth/parameter_updates
/camera_node/image_raw/theora
/camera_node/image_raw/theora/parameter_descriptions
/camera_node/image_raw/theora/parameter_updates
/cmd_vel
/globalMoveFlag
/imu_cal
/joint_states
/nav_setStop
/odom_combined
/orb_scale/scaleStatus
/rosout
/rosout_agg
/system_monitor/report
/tf
/tf_static
/usb_cam/brightness
/usb_cam/image_raw
/xqserial_server/Odom
/xqserial_server/Pose2D
/xqserial_server/Power
/xqserial_server/StatusFlag
/xqserial_server/Twist
节点包括:
/appServer_node
/baselink_broadcaster
/camera_node
/joint_state_publisher
/motor_driver
/robot_state_publisher
/rosout
/system_monitor
/web_node
那么以后在远程控制的时候,如果我们都连在hrt的网络上(因为etc/host中的小强ip是我写的是在hrtwifi中他的的ip)我就可以直接export ROS_MASTER_URI=http://xiaoqiang-desktop:11311 就连接上了
那么问题来了
问题四:上面说的两条语句,同样是远程,区别在哪
我在使用了export ROS_MASTER_URI=http://xiaoqiang-desktop:11311之后,重新尝试了昨天的实验,但是发现首先系统状态(电量啊之类的)就查看不了
lielieyu@lielieyu-ThinkPad-T450:~$ export ROS_MASTER_URI=http://xiaoqiang-desktop:11311
lielieyu@lielieyu-ThinkPad-T450:~$ rostopic echo /system_monitor/report
ERROR: Cannot load message class for [system_monitor/Status]. Are your messages built?
同样,当我想远程控制小强运动时也失败了
rosrun nav_test control.py
[rospack] Error: package 'nav_test' not found
他说找不到这个包
所以我推测:我标红的那个命令是个假的,只是一个空壳,而没有实际内容,只能显示出小强上话题的名字而实际调用的时候却运行不了。
而摄像头之所以能用这种方式打开,事实上我推测是因为我们自己的电脑里有相关的包,这一点也得到了证实
这是他打开小强摄像头的程序
rosrun image_view image_view image:=/camera_node/image_raw _image_transport:=compressed
这是我从我的电脑中找这个包的语句
lielieyu@lielieyu-ThinkPad-T450:~$ rospack find image_view
/opt/ros/kinetic/share/image_view
说明image_view这个包在我电脑中是存在的
我估计后半句的意思是把摄像头的图像赋值给某个东西,得在了解一下。
所以我感觉,这两种控制方式的区别就是,ssh是真控制,可以运行小强中的节点和包。而红字实际上还是只能运行我们自己电脑中的包,是假控制。
感觉前者是我访问操作小强,而后者是小强把数据传给我。
所以我推测,二者一个是控制,另一个是通信。
最后
以上就是活力乌龟为你收集整理的小强机器人学习笔记(1)的全部内容,希望文章能够帮你解决小强机器人学习笔记(1)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复