webots与ros联合仿真
假设webots和ros都已安装完成,本文环境为webots R2020b revision 1,ubuntu18.04/Ros Melodic 在2022年12月按照此种步骤安装默认会安装5.0.1版本,对于webots R2020b来说已经不适配,下面过程的第1步可以不执行,从第2步开始,第3步按照第六步后面的说明进行,其余步骤不变。 官方教程: 1)从webots安装目录( 2)将 4)添加webots环境变量,若是默认安装路径则在 否则会出现以下错误: 6)运行官方例程pioneer3at机器人,或者其他机器人 上述方法仅针对最新版本的webots有效,因为使用命令行安装webot-ros默认会安装高版本的,但如果webots不是高版本则会出现许多错误,比如2020b和之后的版本模型的世界坐标系不同,通信错误等等。 因此,若webots不是最新的版本,可以前往GitHub下载和自己webots对应版本的webots-ros,如2020b rev1对应的是2.1.1,之后将下载的源码文件复制到工作空间的src文件夹下,再执行4-6步即可。 注意:每次运行终端时都必须要运行第5步的source,不然会报错。 下面是官方的从源码编译的教程(假设工作空间已定义好) 从对应版本的webots-ros文件夹中复制 同样参考webots-ros包中的同名文件修改 在webots_demo功能包内创建 多个节点要添加多个上述表述 每开一个终端就需要source一次,也可以写到 第一次可能TAB不出来,需要自己手动输入,后面就可以直接TAB出来了联合仿真环境配置
1、安装接口
sudoaptinstallros-melodic-webots-ros
2、创建工作空间
mkdircatkin_ws &&cdcatkin_wswstool init src
3、复制相关文件
/usr/local/webots/projects/languages/ros/
)复制webots_ros
文件夹到工作空间src
文件夹下/usr/local/webots/projects/default/controllers/ros/include/
文件夹下面的srv
和msg
文件夹复制到刚刚放在catkin_ws
工作空间下的webots_ros
功能包内
3)在catkin_ws
目录下编译工作空间catkin_make
~/.bashrc
中添加以下内容:export WEBOTS_HOME=/usr/local/webots
5)souce 到工作空间cdcatkin_wssourcedevel/setup.bash
roslaunch webots_ros pioneer3at.launch
1cd/path/to/catkin_ws/src 23# retrieve the sources4gitclone https://github.com/cyberbotics/webots_ros.git 5# if you are not using the latest version of Webots, you need to checkout the tag corresponding to the Webots version: https://github.com/cyberbotics/webots_ros/releases6# if you are using the development version of Webots, you need to checkout the develop branch.78cd/path/to/catkin_ws 910# checking dependencies11rosdep update 12rosdep install--from-paths src --ignore-src --rosdistro noetic 1314# building15catkin_make 1617# source this workspace (careful when also sourcing others)18source/path/to/catkin_ws/devel/setup.bash
从零开始建立webots-ros仿真环境
1、创建工作空间和功能包
mkdir-p ~/catkin_ws/srccd~/catkin_ws/srccatkin_create_pkg webots_demo std_msgs rospy roscpp sensor_msgs #webots_demo可以改成自己定义的功能包名
2、编译功能包
cd~/catkin_wscatkin_make
3、复制相关文件
srv
,msg
,script
文件夹到webots_demo
功能包内4、配置
webots_demo/CMakeList.txt
文件CMakeList.txt
文件参考webots-ros包中的同名文件修改######################################### Declare ROS messages and services ########################################### Generate messages in the 'msg' folderadd_message_files(FILES BoolStamped.msg Float64Stamped.msg Int32Stamped.msg Int8Stamped.msg RadarTarget.msg RecognitionObject.msg StringStamped.msg )## Generate services in the 'srv' folderadd_service_files(FILES camera_get_focus_info.srv camera_get_info.srv camera_get_zoom_info.srv display_draw_line.srv display_draw_oval.srv display_draw_pixel.srv display_draw_polygon.srv display_draw_rectangle.srv display_draw_text.srv display_get_info.srv display_image_copy.srv display_image_delete.srv display_image_load.srv display_image_new.srv display_image_paste.srv display_image_save.srv display_set_font.srv field_get_bool.srv field_get_color.srv field_get_count.srv field_get_float.srv field_get_int32.srv field_get_node.srv field_get_rotation.srv field_get_string.srv field_get_type.srv field_get_type_name.srv field_get_vec2f.srv field_get_vec3f.srv field_import_node.srv field_import_node_from_string.srv field_remove_node.srv field_remove.srv field_set_bool.srv field_set_color.srv field_set_float.srv field_set_int32.srv field_set_rotation.srv field_set_string.srv field_set_vec2f.srv field_set_vec3f.srv get_bool.srv get_float_array.srv get_float.srv get_int.srv get_string.srv get_uint64.srv get_urdf.srv gps_decimal_degrees_to_degrees_minutes_seconds.srv lidar_get_frequency_info.srv lidar_get_info.srv lidar_get_layer_point_cloud.srv lidar_get_layer_range_image.srv motor_set_control_pid.srv mouse_get_state.srv node_add_force_or_torque.srv node_add_force_with_offset.srv node_get_center_of_mass.srv node_get_contact_point.srv node_get_field.srv node_get_id.srv node_get_number_of_contact_points.srv node_get_name.srv node_get_orientation.srv node_get_parent_node.srv node_get_position.srv node_get_static_balance.srv node_get_status.srv node_get_type.srv node_get_velocity.srv node_remove.srv node_reset_functions.srv node_move_viewpoint.srv node_set_visibility.srv node_set_velocity.srv pen_set_ink_color.srv range_finder_get_info.srv receiver_get_emitter_direction.srv robot_get_device_list.srv robot_set_mode.srv robot_wait_for_user_input_event.srv save_image.srv set_bool.srv set_float.srv set_float_array.srv set_int.srv set_string.srv skin_get_bone_name.srv skin_get_bone_orientation.srv skin_get_bone_position.srv skin_set_bone_orientation.srv skin_set_bone_position.srv speaker_is_sound_playing.srv speaker_speak.srv speaker_play_sound.srv supervisor_get_from_def.srv supervisor_get_from_id.srv supervisor_movie_start_recording.srv supervisor_set_label.srv supervisor_virtual_reality_headset_get_orientation.srv supervisor_virtual_reality_headset_get_position.srv )## Generate added messages and services with any dependencies listed heregenerate_messages(DEPENDENCIES std_msgs sensor_msgs )##################################### catkin specific configuration ####################################### The catkin_package macro generates cmake config files for your package## Declare things to be passed to dependent projects## INCLUDE_DIRS: uncomment this if you package contains header files## LIBRARIES: libraries you create in this project that dependent projects also need## CATKIN_DEPENDS: catkin_packages dependent projects also need## DEPENDS: system dependencies of this project that dependent projects also needcatkin_package(# INCLUDE_DIRS include# LIBRARIES webots_rosCATKIN_DEPENDS roscpp rospy std_msgs sensor_msgs message_runtime tf# DEPENDS system_lib)############# Build #############include_directories(${ catkin_INCLUDE_DIRS})## Instructions for yourself node 这里的节点名自己改,上面的内容对照着复制到自己的文件当中add_executable(yourselfnode src/yourselfnode.cpp)add_dependencies(yourselfnode webots_ros_generate_messages_cpp)target_link_libraries(yourselfnode ${ catkin_LIBRARIES})
5、配置
webots_demo/package.xml
文件:6、创建
launch
和worlds
文件夹worlds
和launch
文件夹,worlds
文件夹中放置.wbt
文件,launch
文件夹中放置launch文件,先把webots-ros
同名文件夹中的webots.launch
和webots_ros_python.launch
复制过来再创建自己的launch文件,可以同时启动ros和webots,名称自定,如test.launch
,内容可以参考webots-ros
同名文件夹中的pioneer3at.launch
。<?xml version="1.0"?><launch><!-- start Webots --><argname="no-gui"default="false,"doc="Start Webots with minimal GUI"/><!-- webots_demo记得更换成自己功能包的名字 --><includefile="$(find webots_demo)/launch/test.launch"><argname="mode"value="realtime"/><argname="no-gui"value="$(arg no-gui)"/><!-- yourworlds.wbt记得改为自己的.wbt文件名字 --><argname="world"value="$(find webots_demo)/worlds/yourworlds.wbt"/></include></launch>
7、编写cpp文件,之后修改配置
CMakeList.txt
文件Instructions for yourself node 这里的节点名自己改,上面的内容对照着复制到自己的文件当中
## Instructions for yourself node 这里的节点名自己改,上面的内容对照着复制到自己的文件当中add_executable(yourselfnode src/yourselfnode.cpp)add_dependencies(yourselfnode webots_ros_generate_messages_cpp)target_link_libraries(yourselfnode
8、编译功能包
cd~/catkin_wscatkin_make
9、source
source~/catkin_ws/devel/setup.bash
~/.bashrc
文件的source /opt/ros/melodic/setup.bash
下方10、运行launch文件,打开webots
roslaunch webots_demo test.launch
11、运行编写好的代码
rosrun webots_demo yourselfnode
webots相关操作
webots几个快捷键
webots中几点tips:
- 最近发表
- 随机阅读
-
- 小米智能电动牙刷pro低至189元
- 二蛋赠书十八期《一本书透透elasticsearch》:原则、先进与工程实践
- 惠普 锐15 锋芒不减 2023年笔记本电脑 2969元到手
- 使用 1panel图形化部署LobeChat服务端数据库版
- 高通公司宣布将收购 Edge Impulse 以增强 AI 以及物联网功能
- 特斯拉财务报告:2024年第四季度收入257亿美元,年收入977亿美元
- 保友办公家具优b2/鹰电脑椅超值购买 1758元
- AI 未来要靠 LWM 打破物理和数字世界的界限?
- 不按套路出牌的“理科男”,靠好奇心成为“华文推理之光”!
- [Python]案例驱动最佳入门:股票分析 Python数据分析与可视化实战
- 【MySQL】表的基本操作
- Ruoyi Cloud K8s 部署
- webrtccentos7配置
- Cursor高效实用,可提高编程效率3倍
- 记 xcode 16.1 beta 中
- 格力新一级能效变频空调仅需2198元
- 推荐哪款猫游戏? 最热猫游戏排行榜
- 海尔智能云系列10kg全智能洗衣机:大容量空气洗涤&3249元的精华技术享受高效清洁的生活
- 音频回声消除算法代码处理逻辑
- 安装python后如何操作anaconda(保姆级教程)
- 搜索
-
- 友情链接
-