PND adam teleop
pnd_teleoperation 该框架用来开发adam机器人摇操作。目前支持noitom动捕及meta quest 3S(coming soon)作为数据输入源。
🤖效果展示
TODO
🎨架构
下方是pnd_teleoperation整体架构图。
- noitom application目前仅支持在windows计算机上运行
- VR(coming soon)
- pnd_teleoperation、pnd-control运行在adam机器人内置nuc中
🖥️环境
adam机器人内置计算机已预装下方环境,如需在别的计算机运行pnd_teleoperation请按照下方环境配置。
- Ubuntu 22
- Ros2 humble
- casadi 3.6.7 (3.6.7, install from source, binary is not compatible with ros2 humble)
sudo apt-get update && sudo apt-get install -y \
build-essential \
coinor-libipopt-dev \
gfortran \
liblapack-dev \
pkg-config \
swig \
git \
cmake \
python3 \
python3-pip \
--install-recommends
cd /tmp && \
git clone https://github.com/casadi/casadi.git casadi && \
cd casadi && \
git checkout 3.6.7 && \
mkdir build && \
cd build && \
cmake -DWITH_PYTHON=ON -DWITH_IPOPT=ON -DWITH_OPENMP=ON -DWITH_THREAD=ON .. && \
make -j$(nproc) && \
sudo make install && \
sudo ldconfig
💃动捕
诺亦腾动捕
打开axis studio,连接传感器并校准姿态。使用BVH数据广播功能,以UDP协议发送数据到目标机器ip。 诺亦腾具体使用教程请参考视频。
bvh数据广播配置如下图:
其中本机地址设置为axis软件运行的计算机ip地址,目标地址设置为adam机器人计算机ip地址。两个计算机需处在同一局域网。
VR
coming soon
🎯pnd_teleoperation
登录到adam机器人
Build
cd ~/Documents
wget https://github.com/pndbotics/pnd_teleoperation/archive/refs/tags/v0.5.0.tar.gz
tar -zxf v0.5.0.tar.gz
cd pnd_teleoperation-0.5.0
source /opt/ros/humble/setup.bash
colcon build
Run
预览
adam上开启另一个终端,并进入pnd_teleoperation根目录。
PC启动Foxglove Studio并注册登录
点击open connection
使用Foxglove WebSocket的方式连接到机器人,ws://localhost:8765中localhost需要填写为对应机器人ip
点击三维面板,左侧出现面板配置。导入三维面板配置:将下方内容拷贝到配置中,然后点击Apply。配置成功后可以看到如下图效果,机器人会跟随动捕运动。
{
"layers": {
"845139cb-26bc-40b3-8161-8ab60af4baf5": {
"visible": true,
"frameLocked": true,
"label": "Grid",
"instanceId": "845139cb-26bc-40b3-8161-8ab60af4baf5",
"layerId": "foxglove.Grid",
"size": 10,
"divisions": 10,
"lineWidth": 1,
"color": "#248eff",
"position": [
0,
0,
0
],
"rotation": [
0,
0,
0
],
"order": 1
}
},
"cameraState": {
"perspective": true,
"distance": 8.362406704376102,
"phi": 78.01200929751727,
"thetaOffset": -81.68452995867766,
"targetOffset": [
-4.304686610834797,
0.46408895757669916,
-2.8097074529725844e-16
],
"target": [
0,
0,
0
],
"targetOrientation": [
0,
0,
0,
1
],
"fovy": 45,
"near": 0.5,
"far": 5000
},
"followMode": "follow-pose",
"followTf": "world",
"scene": {
"meshUpAxis": "z_up",
"transforms": {
"showLabel": false,
"axisScale": 0
},
"ignoreColladaUpAxis": true
},
"transforms": {},
"topics": {
"/robot_description": {
"visible": true
}
},
"publish": {
"type": "point",
"poseTopic": "/move_base_simple/goal",
"pointTopic": "/clicked_point",
"poseEstimateTopic": "/initialpose",
"poseEstimateXDeviation": 0.5,
"poseEstimateYDeviation": 0.5,
"poseEstimateThetaDeviation": 0.26179939
},
"imageMode": {}
}