BUPT 智能交互机器人

场景搭建

很重要,如果设置不对运行时会报错

机器人

首先是机器人的模型,需要从别的有机器人的场景中复制,建议从 ~/robot_ros_application/catkin_ws/src/bodyhub/vrep/Roban.ttt 这个场景中复制,这个场景可能是最基本的示例场景

使用CoppeliaSim打开该场景,把场景中的Talos物体完全展开,按住shift加点击,全部选中它的子实体(下图只选了一点)

image-20230317180725215
image-20230317180725215

复制到自己新建的场景中。复制之后机器人的轴会凸出来(红色的)不知道如何解决

复制之后,双击打开机器人的仿真环境代码,检查和之前场景(Roban.ttt)中的代码是否一致,这个代码应该是规定了仿真模型如何接受ROS中的信号并且做出对应动作的

image-20230317180915631
image-20230317180915631

场景

很必要,之前就是因为这个没能跑起来

除了机器人有相应的代码,场景也有代码,可能也是处理与ROS通信相关内容的,自建的场景是不带这部分的,需要从Roban.ttt中复制

双击roban.ttt中场景代码,查看代码并复制

image-20230317181212232
image-20230317181212232

image-20230317181224479

之后双击自己新建场景中的代码,进行替换

物理模拟可能需要替换成Newton

image-20230317181917755
image-20230317181917755

运行

ROS Interface

CoppeliaSim如果需要和ROS通信,需要一个 libsimExtROSInterface.so 动态链接库,但是好像镜像中给的CoppeliaSim没有,重新编译这个库困难重重,因此可以重新从软件官网下载一个新的

1
2
3
4
5
6
7
8
# download.sh
wget https://www.coppeliarobotics.com/files/CoppeliaSim_Edu_V4_1_0_Ubuntu16_04.tar.xz

tar -xvJf CoppeliaSim_Edu_V4_1_0_Ubuntu16_04.tar.xz

rm -rf CoppeliaSim_Edu # 删除前也可以先 cp CoppeliaSim_Edu CoppeliaSim_Edu.bak 复制一遍备份

mv CoppeliaSim_Edu_V4_1_0_Ubuntu16_04 CoppeliaSim_Edu

以上脚本下载的是Ubuntu16.04的4.1版本

运行机器人代码

根据给出的示例,仿照 complete.py 中方式运行

  1. 所有工作开始前,要先运行 roscore 开启服务(?可能是http)

  2. 运行 ~/CoppeliaSim_Edu 中的 coppeliaSim.sh 打开仿真软件

    • 如果要直接打开特定场景,使用 coppeliaSim.sh scene.ttt 其中 scene.ttt 为场景文件路径
  3. 运行~/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运行了bodyhub

    1
    2
    # bodyhub.sh
    roslaunch bodyhub bodyhub.launch sim:=True

    这两项可能是开启了python程序中给机器人的指令和ros以及仿真环境的通信渠道?

  4. 使用 python filename.py 运行想要运行的python程序。

  5. 给的示例程序中,依赖到了 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 也通过这种方法创建