修改readme格式
This commit is contained in:
parent
a18d218e53
commit
b907c18023
116
README.md
116
README.md
@ -1,112 +1,176 @@
|
|||||||
# 设置代理
|
# 设置代理
|
||||||
|
``` shell
|
||||||
export PROXY="http://192.168.31.39:7890"
|
export PROXY="http://192.168.31.39:7890"
|
||||||
|
|
||||||
export http_proxy="$PROXY"
|
export http_proxy="$PROXY"
|
||||||
|
|
||||||
export https_proxy="$PROXY"
|
export https_proxy="$PROXY"
|
||||||
|
|
||||||
export ftp_proxy="$PROXY"
|
export ftp_proxy="$PROXY"
|
||||||
|
|
||||||
export socks_proxy="$PROXY"
|
export socks_proxy="$PROXY"
|
||||||
|
|
||||||
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
|
```
|
||||||
|
|
||||||
# 设置虚拟can接口
|
# 设置虚拟can接口
|
||||||
|
``` shell
|
||||||
sudo ip link add dev can1 type vcan
|
sudo ip link add dev can1 type vcan
|
||||||
|
|
||||||
sudo ip link set up can1
|
sudo ip link set up can1
|
||||||
|
|
||||||
sudo ip link set can1 type vcan bitrate 1000000
|
sudo ip link set can1 type vcan bitrate 1000000
|
||||||
|
```
|
||||||
|
|
||||||
# 设置can波特率
|
# 设置can波特率
|
||||||
|
``` shell
|
||||||
ip link set can1 type can bitrate 1000000
|
ip link set can1 type can bitrate 1000000
|
||||||
|
```
|
||||||
|
|
||||||
# 启动can
|
# 启动can
|
||||||
|
``` shell
|
||||||
ip link set can0 up
|
ip link set can0 up
|
||||||
|
```
|
||||||
|
|
||||||
# 设置slcan
|
# 设置slcan
|
||||||
|
``` shell
|
||||||
sudo slcand -o -c -s8 -S1000000 /dev/ttyACM0 can0
|
sudo slcand -o -c -s8 -S1000000 /dev/ttyACM0 can0
|
||||||
|
|
||||||
sudo slcand -o -c -s8 -S1000000 /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 can1
|
sudo slcand -o -c -s8 -S1000000 /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 can1
|
||||||
|
```
|
||||||
|
|
||||||
# 查看can信息
|
# 查看can信息
|
||||||
|
``` shell
|
||||||
ip -details -statistics link show can1
|
ip -details -statistics link show can1
|
||||||
###################
|
```
|
||||||
|
|
||||||
# 绑定接口名
|
# 绑定接口名
|
||||||
|
``` shell
|
||||||
sudo vim /etc/udev/rules.d/72-gs-usb-can.rules
|
sudo vim /etc/udev/rules.d/72-gs-usb-can.rules
|
||||||
|
|
||||||
SUBSYSTEM=="net", ACTION=="add", ATTRS{serial}=="004F004F3630501120353355", NAME="can6"
|
SUBSYSTEM=="net", ACTION=="add", ATTRS{serial}=="004F004F3630501120353355", NAME="can6"
|
||||||
|
|
||||||
SUBSYSTEM=="net", ACTION=="add", ATTRS{serial}=="004C004F4D4D501020383834", NAME="can7"
|
SUBSYSTEM=="net", ACTION=="add", ATTRS{serial}=="004C004F4D4D501020383834", NAME="can7"
|
||||||
|
|
||||||
SUBSYSTEM=="net", ACTION=="add", ATTRS{serial}=="0061005A3945501620303651", NAME="can4"
|
SUBSYSTEM=="net", ACTION=="add", ATTRS{serial}=="0061005A3945501620303651", NAME="can4"
|
||||||
|
|
||||||
SUBSYSTEM=="net", ACTION=="add", ATTRS{serial}=="006500573945501620303651", NAME="can5"
|
SUBSYSTEM=="net", ACTION=="add", ATTRS{serial}=="006500573945501620303651", NAME="can5"
|
||||||
|
|
||||||
sudo udevadm control --reload-rules
|
sudo udevadm control --reload-rules
|
||||||
|
|
||||||
sudo udevadm trigger
|
sudo udevadm trigger
|
||||||
#######################
|
```
|
||||||
|
|
||||||
# 安装ros依赖
|
# 安装ros依赖
|
||||||
rosdepc install --from-paths src --ignore-src --rosdistro=humble -y
|
``` shell
|
||||||
|
rosdepc install --from-paths src --ignore-src --rosdistro=humble -y
|
||||||
|
```
|
||||||
|
|
||||||
# 启动单臂
|
# 启动单臂
|
||||||
|
``` shell
|
||||||
ros2 launch openarm_bringup openarm.launch.py arm_type:=v10 use_fake_hardware:=false can_interface:=can6
|
ros2 launch openarm_bringup openarm.launch.py arm_type:=v10 use_fake_hardware:=false can_interface:=can6
|
||||||
|
```
|
||||||
|
|
||||||
# 设置单臂运动
|
# 设置单臂运动
|
||||||
|
``` shell
|
||||||
ros2 action send_goal /joint_trajectory_controller/follow_joint_trajectory control_msgs/action/FollowJointTrajectory '{trajectory: {joint_names: ["openarm_joint1", "openarm_joint2", "openarm_joint3", "openarm_joint4", "openarm_joint5", "openarm_joint6", "openarm_joint7"], points: [{positions: [0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15], time_from_start: {sec: 1, nanosec: 0}}]}}'
|
ros2 action send_goal /joint_trajectory_controller/follow_joint_trajectory control_msgs/action/FollowJointTrajectory '{trajectory: {joint_names: ["openarm_joint1", "openarm_joint2", "openarm_joint3", "openarm_joint4", "openarm_joint5", "openarm_joint6", "openarm_joint7"], points: [{positions: [0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15], time_from_start: {sec: 1, nanosec: 0}}]}}'
|
||||||
|
|
||||||
ros2 action send_goal /joint_trajectory_controller/follow_joint_trajectory control_msgs/action/FollowJointTrajectory '{trajectory: {joint_names: ["openarm_joint1", "openarm_joint2", "openarm_joint3", "openarm_joint4", "openarm_joint5", "openarm_joint6", "openarm_joint7"], points: [{positions: [0, 0, 0, 0, 0, 0, 0], time_from_start: {sec: 1, nanosec: 0}}]}}'
|
ros2 action send_goal /joint_trajectory_controller/follow_joint_trajectory control_msgs/action/FollowJointTrajectory '{trajectory: {joint_names: ["openarm_joint1", "openarm_joint2", "openarm_joint3", "openarm_joint4", "openarm_joint5", "openarm_joint6", "openarm_joint7"], points: [{positions: [0, 0, 0, 0, 0, 0, 0], time_from_start: {sec: 1, nanosec: 0}}]}}'
|
||||||
|
```
|
||||||
|
|
||||||
# 设置右臂运动
|
# 设置右臂运动
|
||||||
ros2 action send_goal /right_joint_trajectory_controller/follow_joint_trajectory control_msgs/action/FollowJointTrajectory '{trajectory: {joint_names: ["openarm_right_joint1", "openarm_right_joint2", "openarm_right_joint3", "openarm_right_joint4", "openarm_right_joint5", "openarm_right_joint6", "openarm_right_joint7"], points: [{positions: [0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15], time_from_start: {sec: 1, nanosec: 0}}]}}'
|
``` shell
|
||||||
|
ros2 action send_goal /right_joint_trajectory_controller
|
||||||
|
follow_joint_trajectory control_msgs/action/FollowJointTrajectory '{trajectory: {joint_names: ["openarm_right_joint1", "openarm_right_joint2", "openarm_right_joint3", "openarm_right_joint4", "openarm_right_joint5", "openarm_right_joint6", "openarm_right_joint7"], points: [{positions: [0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15], time_from_start: {sec: 1, nanosec: 0}}]}}'
|
||||||
|
|
||||||
ros2 action send_goal /right_joint_trajectory_controller/follow_joint_trajectory control_msgs/action/FollowJointTrajectory '{trajectory: {joint_names: ["openarm_right_joint1", "openarm_right_joint2", "openarm_right_joint3", "openarm_right_joint4", "openarm_right_joint5", "openarm_right_joint6", "openarm_right_joint7"], points: [{positions: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], time_from_start: {sec: 1, nanosec: 0}}]}}'
|
ros2 action send_goal /right_joint_trajectory_controller/follow_joint_trajectory control_msgs/action/FollowJointTrajectory '{trajectory: {joint_names: ["openarm_right_joint1", "openarm_right_joint2", "openarm_right_joint3", "openarm_right_joint4", "openarm_right_joint5", "openarm_right_joint6", "openarm_right_joint7"], points: [{positions: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], time_from_start: {sec: 1, nanosec: 0}}]}}'
|
||||||
|
```
|
||||||
|
|
||||||
# 启动双臂
|
# 启动双臂
|
||||||
|
``` shell
|
||||||
ros2 launch openarm_bringup openarm.bimanual.launch.py arm_type:=v10 use_fake_hardware:=false gravity_compensation_enabled:=false gravity_compensation_use_kdl:=false gravity_torque_mode:=false enable_joint_state_udp_broadcast:=true joint_state_udp_payload_format:=json
|
ros2 launch openarm_bringup openarm.bimanual.launch.py arm_type:=v10 use_fake_hardware:=false gravity_compensation_enabled:=false gravity_compensation_use_kdl:=false gravity_torque_mode:=false enable_joint_state_udp_broadcast:=true joint_state_udp_payload_format:=json
|
||||||
|
```
|
||||||
|
|
||||||
# 启动双臂位置控制器
|
# 启动双臂位置控制器
|
||||||
|
``` shell
|
||||||
ros2 launch openarm_bringup openarm.bimanual.launch.py arm_type:=v10 use_fake_hardware:=false gravity_compensation_enabled:=false gravity_compensation_use_kdl:=false gravity_torque_mode:=false robot_controller:=forward_position_controller enable_joint_state_udp_broadcast:=true joint_state_udp_payload_format:=json
|
ros2 launch openarm_bringup openarm.bimanual.launch.py arm_type:=v10 use_fake_hardware:=false gravity_compensation_enabled:=false gravity_compensation_use_kdl:=false gravity_torque_mode:=false robot_controller:=forward_position_controller enable_joint_state_udp_broadcast:=true joint_state_udp_payload_format:=json
|
||||||
|
```
|
||||||
|
|
||||||
# 启动双臂重力补偿
|
# 启动双臂重力补偿
|
||||||
|
``` shell
|
||||||
ros2 launch openarm_bringup openarm.bimanual.launch.py arm_type:=v10 use_fake_hardware:=false gravity_compensation_enabled:=true gravity_compensation_use_kdl:=true gravity_torque_mode:=true gripper_gravity_compensation_enabled:=true enable_joint_state_udp_broadcast:=true joint_state_udp_payload_format:=json
|
ros2 launch openarm_bringup openarm.bimanual.launch.py arm_type:=v10 use_fake_hardware:=false gravity_compensation_enabled:=true gravity_compensation_use_kdl:=true gravity_torque_mode:=true gripper_gravity_compensation_enabled:=true enable_joint_state_udp_broadcast:=true joint_state_udp_payload_format:=json
|
||||||
|
```
|
||||||
|
|
||||||
# 启动moveit
|
# 启动moveit
|
||||||
|
``` shell
|
||||||
ros2 launch openarm_bimanual_moveit_config demo.launch.py use_fake_hardware:=false
|
ros2 launch openarm_bimanual_moveit_config demo.launch.py use_fake_hardware:=false
|
||||||
|
|
||||||
ros2 launch openarm_bimanual_moveit_config demo.launch.py use_fake_hardware:=false robot_controller:=forward_velocity_controller
|
ros2 launch openarm_bimanual_moveit_config demo.launch.py use_fake_hardware:=false robot_controller:=forward_velocity_controller
|
||||||
|
```
|
||||||
# 启动动作录制
|
# 启动动作录制
|
||||||
# 启动节点
|
## 启动节点
|
||||||
|
``` shell
|
||||||
ros2 launch openarm_joint_recorder joint_trajectory_recorder.launch.py
|
ros2 launch openarm_joint_recorder joint_trajectory_recorder.launch.py
|
||||||
|
```
|
||||||
|
|
||||||
# 开始录制
|
## 开始录制
|
||||||
|
``` shell
|
||||||
ros2 service call /joint_trajectory_recorder/set_recording std_srvs/srv/SetBool "{data: true}"
|
ros2 service call /joint_trajectory_recorder/set_recording std_srvs/srv/SetBool "{data: true}"
|
||||||
|
```
|
||||||
|
|
||||||
# 停止录制
|
## 停止录制
|
||||||
|
``` shell
|
||||||
ros2 service call /joint_trajectory_recorder/set_recording std_srvs/srv/SetBool "{data: false}"
|
ros2 service call /joint_trajectory_recorder/set_recording std_srvs/srv/SetBool "{data: false}"
|
||||||
|
```
|
||||||
|
|
||||||
# 回放
|
## 回放
|
||||||
|
``` shell
|
||||||
ros2 service call /joint_trajectory_recorder/play std_srvs/srv/Trigger "{}"
|
ros2 service call /joint_trajectory_recorder/play std_srvs/srv/Trigger "{}"
|
||||||
|
```
|
||||||
|
|
||||||
# 保存轨迹
|
## 保存轨迹
|
||||||
|
``` shell
|
||||||
ros2 service call /joint_trajectory_recorder/save std_srvs/srv/Trigger "{}"
|
ros2 service call /joint_trajectory_recorder/save std_srvs/srv/Trigger "{}"
|
||||||
|
```
|
||||||
|
|
||||||
# 加载轨迹
|
## 加载轨迹
|
||||||
|
``` shell
|
||||||
ros2 service call /joint_trajectory_recorder/load std_srvs/srv/Trigger "{}"
|
ros2 service call /joint_trajectory_recorder/load std_srvs/srv/Trigger "{}"
|
||||||
|
```
|
||||||
|
|
||||||
# 标定
|
# 摄像头标定
|
||||||
ros2 run camera_calibration cameracalibrator --size 9x6 --square 0.255 \
|
``` shell
|
||||||
left:=/camera/left/image_raw right:=/camera/right/image_raw \
|
ros2 run camera_calibration cameracalibrator --size 9x6 --square 0.255 left:=/camera/left/image_raw right:=/camera/right/image_raw left_camera:=camera_frame_left right_camera:=camera_frame_right
|
||||||
left_camera:=camera_frame_left right_camera:=camera_frame_right
|
```
|
||||||
|
|
||||||
# 下载数据集
|
|
||||||
hf download --repo-type dataset --token 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 pixparse/cc3m-wds --local-dir /home/D/ --resume-download
|
|
||||||
|
|
||||||
export HF_ENDPOINT=https://hf-mirror.com
|
|
||||||
|
|
||||||
# huggingface token
|
# huggingface token
|
||||||
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
|
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
|
||||||
|
|
||||||
|
# 下载数据集
|
||||||
|
``` shell
|
||||||
|
export HF_ENDPOINT=https://hf-mirror.com
|
||||||
|
|
||||||
|
hf download --repo-type dataset --token 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 pixparse/cc3m-wds --local-dir /home/D/ --resume-download
|
||||||
|
```
|
||||||
|
# 上传数据集
|
||||||
|
``` shell
|
||||||
|
hf upload shenchenayng/lerobot_openarm_test . --repo-type=dataset
|
||||||
|
```
|
||||||
|
|
||||||
# 设置can
|
# 设置can
|
||||||
|
``` shell
|
||||||
lerobot-setup-can --mode=setup --interfaces=can0,can2 --use_fd=false
|
lerobot-setup-can --mode=setup --interfaces=can0,can2 --use_fd=false
|
||||||
|
|
||||||
lerobot-setup-can --mode=test --interfaces=can0,can2 --use_fd=false
|
lerobot-setup-can --mode=test --interfaces=can0,can2 --use_fd=false
|
||||||
|
```
|
||||||
|
|
||||||
# 测试相机
|
# 测试相机
|
||||||
|
``` shell
|
||||||
lerobot-find-cameras opencv
|
lerobot-find-cameras opencv
|
||||||
|
```
|
||||||
|
|
||||||
# 启动单臂
|
# 启动单臂
|
||||||
|
``` shell
|
||||||
lerobot-teleoperate \
|
lerobot-teleoperate \
|
||||||
--robot.type=openarm_follower \
|
--robot.type=openarm_follower \
|
||||||
--robot.port=can0 \
|
--robot.port=can0 \
|
||||||
@ -117,8 +181,10 @@ lerobot-teleoperate \
|
|||||||
--teleop.port=can2 \
|
--teleop.port=can2 \
|
||||||
--teleop.id=my_leader --teleop.use_can_fd=false \
|
--teleop.id=my_leader --teleop.use_can_fd=false \
|
||||||
--display_data=true
|
--display_data=true
|
||||||
|
```
|
||||||
|
|
||||||
# 录制单臂
|
# 录制单臂
|
||||||
|
``` shell
|
||||||
lerobot-record \
|
lerobot-record \
|
||||||
--robot.type=openarm_follower \
|
--robot.type=openarm_follower \
|
||||||
--robot.port=can2 \
|
--robot.port=can2 \
|
||||||
@ -135,14 +201,13 @@ lerobot-record \
|
|||||||
--dataset.push_to_hub=false \
|
--dataset.push_to_hub=false \
|
||||||
--dataset.episode_time_s=10 \
|
--dataset.episode_time_s=10 \
|
||||||
--dataset.reset_time_s=2
|
--dataset.reset_time_s=2
|
||||||
|
```
|
||||||
# 上传数据集
|
|
||||||
hf upload shenchenayng/lerobot_openarm_test . --repo-type=dataset
|
|
||||||
|
|
||||||
# wandb token
|
# wandb token
|
||||||
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
|
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
|
||||||
|
|
||||||
# 训练
|
# 训练
|
||||||
|
``` shell
|
||||||
lerobot-train \
|
lerobot-train \
|
||||||
--dataset.repo_id=shenchenayng/lerobot_openarm_test \
|
--dataset.repo_id=shenchenayng/lerobot_openarm_test \
|
||||||
--dataset.root=/home/shen/.cache/huggingface/lerobot/shenchenayng/lerobot_openarm_test \
|
--dataset.root=/home/shen/.cache/huggingface/lerobot/shenchenayng/lerobot_openarm_test \
|
||||||
@ -160,8 +225,10 @@ lerobot-train \
|
|||||||
--save_freq=100
|
--save_freq=100
|
||||||
|
|
||||||
lerobot-train --dataset.repo_id=shenchenayng/lerobot_openarm_test --dataset.root=/home/featurize/lerobot_openarm_test --dataset.revision=v0.1.0 --dataset.streaming=false --policy.type=act --output_dir=/home/featurize/lerobot_openarm_modle/a --job_name=lerobot_openarm_test --policy.device=cuda --wandb.enable=true --wandb.project=lerobot_openarm_test --policy.push_to_hub=false --steps=2000 --batch_size=8 --save_freq=100
|
lerobot-train --dataset.repo_id=shenchenayng/lerobot_openarm_test --dataset.root=/home/featurize/lerobot_openarm_test --dataset.revision=v0.1.0 --dataset.streaming=false --policy.type=act --output_dir=/home/featurize/lerobot_openarm_modle/a --job_name=lerobot_openarm_test --policy.device=cuda --wandb.enable=true --wandb.project=lerobot_openarm_test --policy.push_to_hub=false --steps=2000 --batch_size=8 --save_freq=100
|
||||||
|
```
|
||||||
|
|
||||||
|
# 推理
|
||||||
|
``` shell
|
||||||
lerobot-record \
|
lerobot-record \
|
||||||
--robot.type=openarm_follower \
|
--robot.type=openarm_follower \
|
||||||
--robot.port=can0 \
|
--robot.port=can0 \
|
||||||
@ -175,3 +242,4 @@ lerobot-record \
|
|||||||
--dataset.episode_time_s=1000 \
|
--dataset.episode_time_s=1000 \
|
||||||
--dataset.push_to_hub=false \
|
--dataset.push_to_hub=false \
|
||||||
--policy.path=/home/shen/lerobot_openarm_modle/202603260100_model/202603260100/pretrained_model
|
--policy.path=/home/shen/lerobot_openarm_modle/202603260100_model/202603260100/pretrained_model
|
||||||
|
```
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user