URDF文件完成后,可以在rviz中显示机器人的模型,如果要在gazebo中进行物理环境仿真,还需要为URDF文件加入一些gazebo相关的标签。既然是仿真,那么机器人应该像真在真实环境中一样,可以通过传感器感知周围环境,还可以根据指令进行运动。
在gazebo中可以通过插入一些插件,来仿真机器人的传感器、执行器的特性,这些插件通过<gazebo>元素中的<plugin>标签描述,使用下边的格式加入到URDF文件中:
<gazebo>
<plugin name="differential_drive_controller" filename="libdiffdrive_plugin.so">
... plugin parameters ...
</plugin>
</gazebo>
当然,这些插件常常需要附着于机器人的某个部分,比如要加入一个激光传感器的插件,那么我们需要将这个插件与机器人模型中的激光传感器link绑定:
<gazebo reference="your_link_name">
<plugin name="your_link_laser_controller" filename="libgazebo_ros_laser.so">
... plugin parameters ...
</plugin>
</gazebo>
gazebo默认支持不少常用的设备,可以找到ros安装目录中的gazebo_plugins功能包,里边就是所有支持的插件。当然,你也可以自己编写需要的gazebo插件。
下边列出一些常用插件的使用方法:
1.差速驱动插件
很多机器人本体都采用差速驱动的方式,gazebo提供差速机器人的仿真插件,可以直接将下边的代码放到URDF文件中,修改相应的参数,指定运动控制需要订阅的主题,让机器人在gazebo中动起来。
<gazebo>
<plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so">
<alwaysOn>true</alwaysOn>
<updateRate>${update_rate}</updateRate>
<leftJoint>base_link_right_wheel_joint</leftJoint>
<rightJoint>base_link_left_wheel_joint</rightJoint>
<wheelSeparation>0.5380</wheelSeparation>
<wheelDiameter>0.2410</wheelDiameter>
<torque>20</torque>
<commandTopic>cmd_vel</commandTopic>
<odometryTopic>odom</odometryTopic>
<odometryFrame>odom</odometryFrame>
<robotBaseFrame>base_footprint</robotBaseFrame>
</plugin>
</gazebo>
2.摄像头
在gazebo中也可以让机器人的摄像头看到虚拟的环境,将下边的代码放到URDF文件中,“reference”修改成机器人的摄像头link,还有一些分辨率、刷新率、发布的图像主题等等参数。把机器人模型在gazebo中运行起来后,用image_view或者rviz就可以看到机器人在虚拟环境中的视野了。
<!-- camera -->
<gazebo reference="camera_link">
<sensor type="camera" name="camera1">
<update_rate>30.0</update_rate>
<camera name="head">
<horizontal_fov>1.3962634</horizontal_fov>
<image>
<width>800</width>
<height>800</height>
<format>R8G8B8</format>
</image>
<clip>
<near>0.02</near>
<far>300</far>
</clip>
<noise>
<type>gaussian</type>
<!-- Noise is sampled independently per pixel on each frame.
That pixel's noise value is added to each of its color
channels, which at that point lie in the range [0,1]. -->
<mean>0.0</mean>
<stddev>0.007</stddev>
</noise>
</camera>
<plugin name="camera_controller" filename="libgazebo_ros_camera.so">
<alwaysOn>true</alwaysOn>
<updateRate>0.0</updateRate>
<cameraName>rrbot/camera1</cameraName>
<imageTopicName>image_raw</imageTopicName>
<cameraInfoTopicName>camera_info</cameraInfoTopicName>
<frameName>camera_link</frameName>
<hackBaseline>0.07</hackBaseline>
<distortionK1>0.0</distortionK1>
<distortionK2>0.0</distortionK2>
<distortionK3>0.0</distortionK3>
<distortionT1>0.0</distortionT1>
<distortionT2>0.0</distortionT2>
</plugin>
</sensor>
</gazebo>
我们来解释一下这个插件中的参数含义:
<gazebo reference="camera_link">
插件都是用来描述link、joint的,是一种虚无的属性描述,需要关联相应的实体,所以首先我们需要通过reference参数来定义关联的link或者joint。这里我们关联的是camera_link。
<sensor type="camera" name="camera1">
然后声明插件的类型,并为该插件取一个唯一的名称。
<update_rate>30.0</update_rate>
设置摄像头数据更新的最大频率。
<horizontal_fov>1.3962634</horizontal_fov>
<image>
<width>800</width>
<height>800</height>
<format>R8G8B8</format>
</image>
<clip>
<near>0.02</near>
<far>300</far>
</clip>
再来设置一些摄像头相关的参数,尽量让这些仿真的参数与实际使用的硬件相同。
<plugin name="camera_controller" filename="libgazebo_ros_camera.so">
关联摄像头插件,该插件已经在gazebo中实现,所以直接关联即可。
<cameraName>rrbot/camera1</cameraName>
<imageTopicName>image_raw</imageTopicName>
<cameraInfoTopicName>camera_info</cameraInfoTopicName>
<frameName>camera_link</frameName>
声明摄像头发布的消息话题,以及数据所在的参考系。
3.Kinect
Kinect在机器人导航中用的也很多,为机器人的kinect link绑定这个kinect插件,我们就可以在gazebo中进行SLAM、导航了,对于一些初学者,就算没有实体机器人,也可以在仿真器中玩转机器人。
<gazebo>
<plugin name="${link_name}_controller" filename="libgazebo_ros_openni_kinect.so">
<baseline>0.2</baseline>
<alwaysOn>true</alwaysOn>
<updateRate>1.0</updateRate>
<cameraName>${camera_name}_ir</cameraName>
<imageTopicName>/${camera_name}/depth/image_raw</imageTopicName>
<cameraInfoTopicName>/${camera_name}/depth/camera_info</cameraInfoTopicName>
<depthImageTopicName>/${camera_name}/depth/image_raw</depthImageTopicName>
<depthImageInfoTopicName>/${camera_name}/depth/camera_info</depthImageInfoTopicName>
<pointCloudTopicName>/${camera_name}/depth/points</pointCloudTopicName>
<frameName>${frame_name}</frameName>
<pointCloudCutoff>0.5</pointCloudCutoff>
<distortionK1>0.00000001</distortionK1>
<distortionK2>0.00000001</distortionK2>
<distortionK3>0.00000001</distortionK3>
<distortionT1>0.00000001</distortionT1>
<distortionT2>0.00000001</distortionT2>
<CxPrime>0</CxPrime>
<Cx>0</Cx>
<Cy>0</Cy>
<focalLength>0</focalLength>
<hackBaseline>0</hackBaseline>
</plugin>
</gazebo>
4.激光
有没有感叹过激光传感器太贵了!现在不要9999,不要999,只要把激光传感器的插件放到URDF模型中,上万的激光传感器在gazebo里随便用,妈妈再也不用担心玩机器人败家了。
<gazebo reference="hokuyo_link">
<sensor type="ray" name="head_hokuyo_sensor">
<pose>0 0 0 0 0 0</pose>
<visualize>false</visualize>
<update_rate>40</update_rate>
<ray>
<scan>
<horizontal>
<samples>720</samples>
<resolution>1</resolution>
<min_angle>-1.570796</min_angle>
<max_angle>1.570796</max_angle>
</horizontal>
</scan>
<range>
<min>0.10</min>
<max>30.0</max>
<resolution>0.01</resolution>
</range>
<noise>
<type>gaussian</type>
<!-- Noise parameters based on published spec for Hokuyo laser
achieving "+-30mm" accuracy at range < 10m. A mean of 0.0m and
stddev of 0.01m will put 99.7% of samples within 0.03m of the true
reading. -->
<mean>0.0</mean>
<stddev>0.01</stddev>
</noise>
</ray>
<plugin name="gazebo_ros_head_hokuyo_controller" filename="libgazebo_ros_laser.so">
<topicName>/rrbot/laser/scan</topicName>
<frameName>hokuyo_link</frameName>
</plugin>
</sensor>
</gazebo>
当然,实践是第一要义,这些插件用起来效果到底怎么样,还得你上手来试试。ROS中的很多机器人也提供了gazebo中仿真的模型和实验的案例,如果你还不太明白,直接运行这些已有的模型,看看别人写的代码,理解会更快。这里,推荐一个husky机器人的案例,可以在gazebo中SLAM和自主导航。
husky机器人的主页是http://wiki.ros.org/Robots/Husky,仿真案例在Demo Applications那里。
参考链接:
http://gazebosim.org/tutorials?tut=ros_gzplugins
http://wiki.ros.org/Robots/Husky
评论列表(99条)
老师,您好!请问我用的是这个激光雷达插件:libgazebo_ros_laser.so,但是激光雷达数据的intensity值全是0,请问该怎么设置,才能出现强度值,谢谢!
老师,您好。我用gazebo的时候,如果同时用保险杠插件和深度相机的话,两个都没有数据返回。如果我删了任意一个,另外一个就有数据了。想请问是什么原因?该如何解决?
谢谢!
胡老师,您好!我在使用Gazebo相机插件的过程中遇到了相机没有发送相应topic的问题。比如在机器人中加入depth camera,在通过launch加载到world文件后,运行rostopic list,发现并没有相关topic。而且depth camera使用了插件libgazebo_ros_openni_kinect.so,并且在ROS安装文件夹下的lib里面可以找到对应的.so文件。 但是诡异的是,如果我换成stereo camera后,同样的步骤,在rostopic list下就会出现stereo camera相关的topic! 想请问您是否遇到过相似的问题?如何解决? 非常感谢!
古月老师您好,请问有控制麦克纳姆轮的gazebo插件吗?如果没有我应该怎么写呢?
你好 请问你有找到麦轮插件的相关资料么
有的,libgazebo_ros_planar_move.so
谢谢古月老师!老师 我在xacro文件中添加了gazebo_ros_control gazebo就黑屏了 您知道是什么原因么
胡老师 我看了你的那个solidworks 生成urdf的教程,但是我发现教程里面的麦轮小车的轮子是单独作为一个link而存在的,这样的模型难道不是失去了麦轮小车的动力学特性吗?
有的,libgazebo_ros_planar_move.so
请问大佬你的麦轮实现了用gazebo仿真吗?
老师您好,我想问一下话题odom是由哪部分发布的,有应该如何修改odom的发布频率。是由差速驱动插件libgazebo_ros_diff_drive.so发布的嘛?
老师您好,我现在正用gazebo进行cartographer和hector_slam的仿真,在rviz的map坐标系下,base_link和hokuyo_frame不停高频率闪灭跳动,但可以完成建图,切换到hokuyo_frame系下又没有地图。
运行navigation中的planner出现:
[ WARN] [1565525706.869090552]: [hector_exploration_planner] The start coordinates are outside the costmap!
[ WARN] [1565525706.875438520]: [hector_exploration_planner] inner-exploration: no inner-frontiers have been found! exploration failed!
运行controller出现:
[ INFO] [1565525736.880034032]: Generated exploration path with 0 poses
[ERROR] [1565525736.880073505]: Received plan with zero length
[ERROR] [1565525736.880114476]: Could not transform the global plan to the frame of the controller
请问是哪里出了问题?
老师您好,在仿真环境跑cartographer的时候,发现map或odom坐标系一直抖动,请问这是什么原因???卡了好几天了
请问你解决了吗,我的是坐标系一闪一灭,也是仿真跑cartographer
古月老师你好,请问在相机内参在哪里设置
老师你好,在学习gazebo摄像头仿真时(我使用的是您的例程代码),我发现运行仿真环境后,我的话题列表与您的不一样,缺少了/image_raw/下的几个话题,其次就是,运行rqt_image_raw之后,gazebo就会报错,摄像头界面也是灰色的,不知道这其中出了什么问题?老师可以帮忙解答一下吗?谢谢老师。
用的虚拟机么?最好用双系统
这个更新以下gazebo即可,版本问题,盲猜你用VMware,virtual box不会出现该问题,具体命令:
sudo sh -c ‘echo “deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main” > /etc/apt/sources.list.d/gazebo-stable.list’
wget http://packages.osrfoundation.org/gazebo.key -O – | sudo apt-key add –
sudo apt-get update
sudo apt-get install gazebo7 -y
请问古老师,我现在的模型是四旋翼,想在四旋翼上面添加摄像头。根据您说的我改了URDF文件里面的一个文件,程序 对应进行了相应修改,在后续打开gazebo后另一个终端输入rosrun image_view image_view image:=/robot/mera1/image_raw出来的图不是仿真里面的图,而是我电脑桌面。总感觉我是差了步骤但是刚开始学习并不清楚到底差了哪里,希望您能指点一下。万分感谢。
图像话题没选对吧,确定摄像头驱动跑起来了?
古老师,我尝试把自己的6轴机器人导入gazebo中,按照书上6.7章节的教程,控制器插件那部分应该怎么编写啊,差速控制libgazebo_ros_diff_drive.so和滑动转向驱动libgazebo_ros_skid_steer_drive.so都是控制少数几个轮子的,那多个revolute或prismatic应该怎么编写或者选用哪个插件啊,
类似left_wheel_joint
right_wheel_joint这部分
left_wheel_joint
right_wheel_joint
这个不是可以参考书上的配置来么
书上的配置(leftJoint)base_to_wheel_left_joint(/leftJoint),其中base_to_wheel_left_joint我可以改成我的关节名字j1,但是括号内的参数名字怎么改啊,leftJoint是特定的参数名称吗?
按个是gazebo定义的标签,代表左侧关节
那我是不是可以(leftJoint)j1(/leftJoint)
(leftJoint)j2(/leftJoint)
……..这样一直到第六个
不行,只能有一个
老师,ros学习的微信交流群有吗?找不到您的!
ROS星火计划有好几个群,里边都有我
wjc@wjc-CW65S:~/SensorKinect/Bin$ tar xvf SensorKinect093-Bin-Linux-x64-v5.1.2.1.tar.bz2
Sensor-Bin-Linux-x64-v5.1.2.1/
Sensor-Bin-Linux-x64-v5.1.2.1/Bin/
Sensor-Bin-Linux-x64-v5.1.2.1/Bin/XnSensorServer
Sensor-Bin-Linux-x64-v5.1.2.1/GPL.txt
Sensor-Bin-Linux-x64-v5.1.2.1/install.sh
Sensor-Bin-Linux-x64-v5.1.2.1/Install/
Sensor-Bin-Linux-x64-v5.1.2.1/Install/55-primesense-usb.rules
Sensor-Bin-Linux-x64-v5.1.2.1/Install/blacklist-gspca-kinect.conf
Sensor-Bin-Linux-x64-v5.1.2.1/Config/
Sensor-Bin-Linux-x64-v5.1.2.1/Config/GlobalDefaultsKinect.ini
Sensor-Bin-Linux-x64-v5.1.2.1/LGPL.txt
Sensor-Bin-Linux-x64-v5.1.2.1/Lib/
Sensor-Bin-Linux-x64-v5.1.2.1/Lib/libXnCore.so
Sensor-Bin-Linux-x64-v5.1.2.1/Lib/libXnDeviceSensorV2KM.so
Sensor-Bin-Linux-x64-v5.1.2.1/Lib/libXnDDK.so
Sensor-Bin-Linux-x64-v5.1.2.1/Lib/libXnDeviceFile.so
Sensor-Bin-Linux-x64-v5.1.2.1/Lib/libXnFormats.so
wjc@wjc-CW65S:~/SensorKinect/Bin$ sudo./install.sh
bash: sudo./install.sh: 没有那个文件或目录
wjc@wjc-CW65S:~/SensorKinect/Bin$
用您视频中的32位的相关代码和64位的,都会出现“没有那个文件和目录”,我电脑是64位的,请问老师这是什么问题
为什么我在turtlebot找不到kinect.jpg 和 kinect.tga 两张图片,只有kinect.dae,但是仿真的时候没有kinect传感器在模型上面??求解,谢谢
古月老师,ROS中gazebo一运行rqt_image_view命令,运行gazebo的终端就报错,摄像头也是灰的,如果只运行键盘命令可以操纵机器人运动。请问是除了什么问题呢?
可能是底层的图形渲染出问题了,试下用rviz显示图像
您好,我按照gazebo官网的(教程)[http://gazebosim.org/tutorials?tut=ros_gzplugins#IMU(GazeboRosImu)]配置了imu的gazebo插件,但是在gazebo中加载机器人后查看topic列表发现并没有相应的传递sensor_msgs/Imu的话题生成,请问应该从哪些方面排查导致这个问题的原因?
古月老师,问一下我装了个gazebo9,怎么将小车放在gazebo9中运行呢?而不是在默认的gazebo7中
roslaunch mrobot_gazebo view_mrobot_gazebo.launch
… logging to /home/robot/.ros/log/29bc776c-4b3c-11e9-880e-94c6917df537/roslaunch-robot-ZHENGJIUZHE-REN7000-25ICZ-11639.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
Traceback (most recent call last):
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 306, in main
p.start()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 268, in start
self._start_infrastructure()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 217, in _start_infrastructure
self._load_config()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 132, in _load_config
roslaunch_strs=self.roslaunch_strs, verbose=self.verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/config.py", line 451, in load_config_default
loader.load(f, config, verbose=verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 749, in load
self._load_launch(launch, ros_config, is_core=core, filename=filename, argv=argv, verbose=verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 721, in _load_launch
self._recurse_load(ros_config, launch.childNodes, self.root_context, None, is_core, verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 685, in _recurse_load
val = self._include_tag(tag, context, ros_config, default_machine, is_core, verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 95, in call
return f(*args, **kwds)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 589, in _include_tag
inc_filename = self.resolve_args(tag.attributes['file'].value, context)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 183, in resolve_args
return substitution_args.resolve_args(args, context=context.resolve_dict, resolve_anon=self.resolve_anon)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 370, in resolve_args
resolved = _resolve_args(resolved, context, resolve_anon, commands)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 383, in _resolve_args
resolved = commands[command](resolved, a, args, context)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 151, in _find
source_path_to_packages=source_path_to_packages)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 197, in _find_executable
full_path = _get_executable_path(rp.get_path(args[0]), path)
File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 203, in get_path
raise ResourceNotFound(name, ros_paths=self._ros_paths)
ResourceNotFound: gazebo_ros
ROS path [0]=/opt/ros/kinetic/share/ros
ROS path [1]=/home/robot/catkin_ws/src
ROS path [2]=/opt/ros/kinetic/share
报错是这样的。希望您能帮解决下
好像没装gazebo_ros这个包吧
古月老师你好,请问在小车的移动过程中,地图随着小车移动出现偏移,导致原先定的点和到达的点不一致。 只更换了local_planner,请问问题可能会出现在哪呢?
可能和传感器的数据精度有关系
古月老师您好,在这一部分。我在运行gazebo时发现,终端没用报错,移动控制动不了,话题列表里没有cmd_vel,odom.之后在运行相机,Kinect以及激光雷达时也没有相关话题。。。话题列表都是
/clock
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/gazebo_gui/parameter_descriptions
/gazebo_gui/parameter_updates
/joint_states
/rosout
/rosout_agg
/tf
/tf_static
感谢老师,请帮帮我,
gazebo传感器的仿真没有跑起来,请检查urdf中关于传感器仿真部分的配置
謝謝老師!
古月老师,我在用您的例子跑6.7章节gazebo仿真环境中,发现小车在不控制的情况下会自己移动,然后走直线也会跑偏,关节处出现晃动,请问这是gazebo的问题吗?
和gazebo、物理参数都有关系,试下把质量参数都改小一点
古老师你好,我用rviz显示机器人的时候都没有问题,但是使用gazebo做仿真的时候,模型就发生混乱。关节类型是fixed的都正正常显示,但是活动关节就显示错误。运行终端的时候没有提示错误。
应该是关节的controller配置有问题
古月老师你好,我是在gazebo中用kinect2相机做仿真。我想问下在仿真环境中如何将像素坐标转换为对应的世界坐标,是在gazebo中标定得到内外参吗,还是直接在kinect2.gazebo.xacro设置参数就可以,不是太懂,望指教。
像素坐标指的是只有图像么,原理是一样的,主要是外参标定
谢谢您的回复,像素坐标就是图像中的一个像素点,外参我在定义模型的时候就能得到,我想知道仿真中kinect相机的内参如何获得呢?
仿真里的话内参应该是由仿真参数设置决定的
好的谢谢您,我在urdf文件里设置一下
古月老师,我用gazebo的激光雷达插件时数据都是 -inf,强度都是 1,这是什么原因呢?
inf就是没有有效数据
古哥,我利用了husky开源包在gazebo中跑仿真时,用teleop控制其旋转运动时,它很难在仿真环境实现原地旋转,有时跑偏得挺厉害的;再是通过EKF(robot_localiztion包)融合imu和里程计实现定位时,在gazebo中让它跑一段距离在跑回来时,它在rviz中的位置也定位得差别有大;想问有什么方法可以将它仿真环境运动误差降低,同时提高它定位精度(还是想用4轮差速底盘,又不太想用slam去实现定位,尝试过添加gps效果改善的好像不是明显);可以通过调整哪些参数改善它吗,或者哪些开源包能用?真心感谢古哥!! 😀
首先gazebo仿真本身就存在一些误差,其次使用的这些功能包也并不是完善的,就和实际机器人一样,首先提高传感器精度,然后优化定位算法,这些包光改参数提升的空间不大,往深的话还是得代码优化或替换
哦哦,谢谢谷哥!如果采用单线激光雷达/GPS/imu 做室外融合定位的话,有没有推荐的开源包.
这方面我不了解
古月老师您好!我在运行roslaunch mbot_gazebo view_mbot_gazebo_play_ground.launch语句时,查看了rostopic list ,/clock/gazebo/link_states/gazebo/model_states/gazebo/parameter_descriptions/gazebo/parameter_updates
/gazebo/set_link_state/gazebo/set_model_state/gazebo_gui/parameter_descriptions/gazebo_gui/parameter_updates
/joint_states/rosout/rosout_agg/tf/tf_static,在运行roslaunch mbot_teleop mbot_teleop.launch 时候,机器人怎么也不动?
话题当中没看到速度话题,看下运行gazebo时候终端有没有报错
古老师你好,在学习你的书,我用你的代码跑6.5的例子时,其他的没问题,用键盘操作时机器人一点也不动,跑6.7的例子也是不动
终端里有错误提示么?
终端里面没有错误提示,都是正常开启的
这是话题列表/clicked_point
/cmd_vel
/diagnostics
/initialpose
/joint_states
/move_base_simple/goal
/odom
/rosout
/rosout_agg
/tf
/tf_static
你好,我也碰到这个问题,没有速度话题,请问您是怎么解决的。
老师,现在可以动了
古月老师你好,想问下如何查看gazebo里插件有哪些标签,当我接触到一个新的插件时,比如libgazebo_ros_diff_drive,要怎么查看有哪些标签和这些标签要如何设置呢?
主要看已有的例程、wiki、gazebo的官网
运行 roslaunch mrobot_gazebo view_mrobot_gazebo.launch 时,
报错:
[gazebo-2] process has died [pid 8435, exit code 255, cmd /opt/ros/kinetic/lib/gazebo_ros/gzserver -e ode /home/wj/wujie/src/mrobot_gazebo/worlds/playground.world __name:=gazebo __log:=/home/wj/.ros/log/4e09b742-cb67-11e8-a6d1-000c29f716ad/gazebo-2.log].
log file: /home/wj/.ros/log/4e09b742-cb67-11e8-a6d1-000c29f716ad/gazebo-2*.log
请您指导。
gazebo启动失败,重启几次,还不行的话就重新安装试试,这个看不到明确的错误信息,硬件显卡问题、软件依赖问题都有可能
古月大神,我在用 差速 插件的时候,出现了tf_tree错误。不知道您遇到过没有
问题描述:
(1)我在xacro文件中,规定好了一套 link 之间的连接方式, [left_wheel_link]和 [right_wheel_link]的parent link 是 [base_link];
(2)配置 差速插件时,定义[left_wheel_link]和 [right_wheel_link] 为插件中左右轮的节点 ;
(3) rviz中发现 [left_wheel_link]和 [right_wheel_link]的parent节点不停在跳变;
(4)用roswtf 检查,发现了tf冲突,大概意思是,[/gazebo]和[/robot_state_publisher] 同时将 [left_wheel_link]和 [right_wheel_link] 映射到了不同的 parent link。
1. ERROR TF re-parenting contention:
* reparenting of [left_wheel_link] to [base_link] by [/robot_state_publisher]
* reparenting of [right_wheel_link] to [base_link] by [/robot_state_publisher]
* reparenting of [right_wheel_link] to [base_footprint] by [/gazebo]
* reparenting of [left_wheel_link] to [base_footprint] by [/gazebo]
我尝试修改了 插件的robot命令空间等参数。。任然有这个问题,我很苦恼。请求大神指点一二,谢谢。
古月大神,为什么差速插件中的base_footprint 用的是base_footprint,而不是base_link?
这个和模型有关系,只要模型中有,其实用哪个都可以
古月大神,我用libgazebo_ros_diff_drive时碰到一个tf_tree的问题。问题描述:我在xacro中维护的tf关系是(1)base_footprint->base_link-> [left_wheel_link],(2)base_footprint->base_link->[right_wheel_link]。用libgazebo_ros_diff_drive.so插件控制,配置好左右轮的节点为 [left_wheel_link] 和 [right_wheel_link]。但是我用roswtf检查时出现了 tf 冲突,大概意思是 /gazebo 和 /ros_state_publiser 同时维护了 [left_wheel_link] 和 [right_wheel_link]的坐标关系。
reparenting of [left_wheel_link] to [base_link] by [/robot_state_publisher]
* reparenting of [right_wheel_link] to [base_link] by [/robot_state_publisher]
* reparenting of [right_wheel_link] to [base_footprint] by [/gazebo]
* reparenting of [left_wheel_link] to [base_footprint] by [/gazebo]
观察rivz的tf可以明显看到 [right_wheel_link] 和[left_wheel_link] 的根节点在不停改变。
我很困惑,不知这个是什么问题造成的?古月大神遇到过吗?
应该是同时在发布tf变换,检查下是否可以把其中一个关掉
你好,博文中描述的摄像头,我怎么才能才ros里面获取这个摄像头的视频流呢~
已经知道,谢谢
您好,请问您是怎样获取的gazebo中摄像头的视频呢?
同问
请问,下载好的模型放在哪里啊 ?有说gazebo/model,可是没有找到。。
自己创建一个models文件夹,然后把模型放进去
在home里面建就可以吗?在usr-share-gazebo里面新建不了文件夹,usr-include-gazebo7-gazebo里面也新建不了。。
ctrl+h 可以显示隐藏文件夹,那个是.gazebo
路径:/home/xxx/.gazebo/models
古月老师,我写了一个3轮的小车模型,左右各一个动力轮,前面一个万向轮。现在,轮子走一步卡一步,不知道给万向轮添加什么插件合适。
万向轮是被动运动的,不需要插件,做一个固定关节或者转动关节就可以了
古月老师,您好,从动轮不需要插件的话,那他们之间的tf关系会在tf_tree里面显示出来吗,我在urdf.xacro里面定义好了tf关系,但是从动轮的tf关系一直不存在。用check_urdf命令检查整个关系是正确的。
那我要是做一个齿轮传动的话,是不是只需要主动轮放电机,从动轮只需要设置一个转动关节就好了
古月大哥,你好,我在 roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch 时,报如下错误,月哥能否知道什么原因
Warning [parser.cc:478] XML Attribute[frame] in element[pose] not defined in SDF, ignoring.
Error [parser.cc:697] XML Element[torsional], child of element[friction] not defined in SDF. Ignoring.[friction]
Error [parser.cc:688] Error reading element
Error [parser.cc:688] Error reading element
Error [parser.cc:688] Error reading element
Error [parser.cc:688] Error reading element
Error [parser.cc:688] Error reading element
Error [parser.cc:688] Error reading element
Error [parser.cc:348] Unable to read element
你用的ros版本或者gazebo版本是不是不一样,看上去是版本导致的,先把这个launch里调用的地图删掉,用空环境试试。空环境可以的话,应该就是版本导致,那就自己做一个环境。
我也遇到了这个问题,请问你怎么解决的,谢谢
地图的问题,已经解决
古神,请问请问,怎么在gazebo中搭建道路公路模型??
这个要看gazebo官网的教程,或者使用solidworks建模导出
你好,我现在在做实际的小车,想用实际的激光雷达代替虚拟的激光雷达,但是不明白怎么把实际的激光雷达和urdf中的相应关节联系起来,就像gazebo是用reference直接关联虚拟的传感器关节那样。
URDF模型中的激光雷达模型有一个激光坐标系,激光数据发布在这个坐标系下就可以了
朱教授,学会了教教我呗
月哥,我用move_group和gazebo已经连接成功了,目标点位置,随机位置都没有问题,但只有笛卡尔坐标系的不行,我的圆弧,直线和样条曲线都是在笛卡尔坐标系中实现的,不知道是我不应该用笛卡尔坐标系规划不对,还是对于笛卡尔坐标系规划的设置有问题。
笛卡尔空间的运动,最终还是通过IK反解为关节角度,才能驱动机器人运动
“当然,你也可以自己编写需要的gazebo插件。”
如果要自己编写gazebo插件,要怎么操作呢。。。网上好像都找不到相关教程啊
gazebo插件暂时我也没写过,在gazebo的官网上找找看