BUPT 智能交互机器人
场景搭建
很重要,如果设置不对运行时会报错
机器人
首先是机器人的模型,需要从别的有机器人的场景中复制,建议从 ~/robot_ros_application/catkin_ws/src/bodyhub/vrep/Roban.ttt
这个场景中复制,这个场景可能是最基本的示例场景
使用CoppeliaSim打开该场景,把场景中的Talos物体完全展开,按住shift加点击,全部选中它的子实体(下图只选了一点)
复制到自己新建的场景中。复制之后机器人的轴会凸出来(红色的)不知道如何解决
复制之后,双击打开机器人的仿真环境代码,检查和之前场景(Roban.ttt)中的代码是否一致,这个代码应该是规定了仿真模型如何接受ROS中的信号并且做出对应动作的
场景
很必要,之前就是因为这个没能跑起来
除了机器人有相应的代码,场景也有代码,可能也是处理与ROS通信相关内容的,自建的场景是不带这部分的,需要从Roban.ttt中复制
双击roban.ttt中场景代码,查看代码并复制
之后双击自己新建场景中的代码,进行替换
物理模拟可能需要替换成Newton
运行
ROS Interface
CoppeliaSim如果需要和ROS通信,需要一个 libsimExtROSInterface.so
动态链接库,但是好像镜像中给的CoppeliaSim没有,重新编译这个库困难重重,因此可以重新从软件官网下载一个新的
1 | # download.sh |
以上脚本下载的是Ubuntu16.04的4.1版本
运行机器人代码
根据给出的示例,仿照 complete.py
中方式运行
所有工作开始前,要先运行
roscore
开启服务(?可能是http)运行
~/CoppeliaSim_Edu
中的coppeliaSim.sh
打开仿真软件- 如果要直接打开特定场景,使用
coppeliaSim.sh scene.ttt
其中scene.ttt
为场景文件路径
- 如果要直接打开特定场景,使用
运行
~/robot_ros_application/catkin_ws/src/ros_actions_node/scripts/game/2022/normal_sim_game/ai_innovative_roban_sim/scripts/auto_run
中的node_start.sh
该脚本内容如下1
2
3
4
5
6# node_start.sh
sleep 3s
rosrun ik_module ik_module_node &
. /home/fan/robot_ros_application/catkin_ws/devel/setup.bash
echo "121" | sudo -S bash bodyhub.sh &首先第三行使用rosrun运行
ik_module_node
,之后第五行设置catkin环境,该语句可能执行不成功,在前面加上bash变成bash /home/fan/robot_ros_application/catkin_ws/devel/setup.bash
第六行使用sudo特权运行
bodyhub.sh
bodyhub.sh
中使用roslaunch运行了bodyhub1
2# bodyhub.sh
roslaunch bodyhub bodyhub.launch sim:=True这两项可能是开启了python程序中给机器人的指令和ros以及仿真环境的通信渠道?
使用
python filename.py
运行想要运行的python程序。给的示例程序中,依赖到了
pyaudio
这个库,需要自行pip安装
运行python的时候有可能遇到问题,找不到 lejufunc
,需要创建符号链接。
在 ~/robot_ros_application/catkin_ws/src/ros_actions_node/scripts
中执行命令
1 | ln -s ../../leju_lib_pkg/src/lejufunc/ lejufunc |
还有一个符号链接 lejulib.py
指向 ../../leju_lib_pkg/lejulib.py
也通过这种方法创建