BSD 3-Clause "New" or "Revised" License

项目介绍

giulioturrisi/Differential-Drive-Robot 是一个托管在 GitHub 上的开源项目,主要使用 Python 编写,采用 BSD 3-Clause "New" or "Revised" License 许可证,目前获得 96 个 Star、17 次 Fork。

仓库全名
giulioturrisi/Differential-Drive-Robot
开源许可证
BSD 3-Clause "New" or "Revised" License
Star 数
96
Fork 数
17

README 摘要

Overview This repo contains the code for controlling both a real and a simulated differential drive robot via ROS2 using different planners, controllers, and open-source libraries for slam and odometry. List of available controllers 1. Approximate linearization 2. Input-Output linearization 3. Input-Output linearization + Linear MPC via Casadi 4. Dynamic linearization 5. Nonlinear Lyapunov 6. Nonlinear MPC via…

完整内容见 GitHub 原始 README 或本页 。

常见问题

Differential-Drive-Robot 用什么语言开发?

主要使用 Python 编写,采用 BSD 3-Clause "New" or "Revised" License 许可证,目前有 96 个 Star。

Differential-Drive-Robot 可以免费商用吗?

仓库采用 BSD 3-Clause "New" or "Revised" License 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 Differential-Drive-Robot 的源码?

可以直接克隆仓库:git clone https://github.com/giulioturrisi/Differential-Drive-Robot.git,默认分支为 main;安装与运行步骤见仓库 README。

Differential-Drive-Robot 最近还在维护吗?

仓库最近一次更新为 2 周前,当前没有未关闭的 Issue;Star 数为 96,可作为社区活跃度的参考。

关于

Path planning and control algorithms for a differential drive robot using ROS2

描述取自 GitHub 官方 API,中文内容由 GitRead 中文社区 编辑团队整理。

简要分析

热度分
131
价值分
62
活跃状态
活跃

语言占比

C
C++
CMake
Makefile
Python

贡献者

README

Overview

This repo contains the code for controlling both a real and a simulated differential drive robot via ROS2 using different planners, controllers, and open-source libraries for slam and odometry.

List of available controllers

  1. Approximate linearization
  2. Input-Output linearization
  3. Input-Output linearization + Linear MPC via Casadi
  4. Dynamic linearization
  5. Nonlinear Lyapunov
  6. Nonlinear MPC via Casadi
  7. Nonlinear MPC via Acados
  8. Iterative Linear Quadratic Regulator
  9. Iterative Linear Quadratic Regulator via Crocoddyl
  10. Predictive Sampling MPC

List of available planners

  1. A*
  2. Breadth First search
  3. Djikstra
  4. Greedy Best First search
  5. RRT
  6. RRT*
  7. Informed RRT*
  8. RRT-primitives

Repository structure

It includes the following folders and subfolders:

  1. python_scripts: most of the ROS2 nodes call some classes here

  2. mujoco_simulation: MuJoCo model of the robot (generated from the urdf) and of the environment, plus the script that simulates it via ROS2 (dynamically enabled or not, with a 2D lidar)

  3. ros2_ws: collection of ROS2 nodes for controlling the robot with the aid of some external tools such as slam_toolbox (generate a map and localization) and kiss-icp (lidar odometry)

  4. installation: pixi workspace (pixi.toml and pixi.lock) with all the dependencies and the commands to build and run everything

Dependencies

All the dependencies are handled by pixi (Linux x86_64 only):

  1. ROS2 Humble and slam_toolbox via RoboStack

  2. MuJoCo, casadi, jax, numba, crocoddyl via conda-forge

  3. acados, kiss-icp and pointcloud_to_laserscan are git submodules compiled from source

Build on linux

  1. install pixi
curl -fsSL https://pixi.sh/install.sh | sh
  1. clone the repo (if you already cloned it without submodules, run git submodule update --init --recursive)
git clone --recurse-submodules https://github.com/giulioturrisi/Differential-Drive-Robot.git
  1. install and activate the environment (the first time it downloads all the dependencies), then build acados and the ROS2 workspace
cd Differential-Drive-Robot/installation
pixi shell                                                         (or pixi shell -e nvidia with an NVIDIA GPU, jax with CUDA)
pixi run build

pixi run clean removes all the build artifacts

How to run the simulation

All the commands below are pixi tasks defined in installation/pixi.toml (pixi task list shows them). On each new terminal activate the environment once

cd Differential-Drive-Robot/installation
pixi shell                                                         (or pixi shell -e nvidia)

then the tasks can be launched from any folder with pixi run <task>, in the activated environment. Without activating the environment, use pixi run -m installation <task> from the root of the repo (adding -e nvidia for the nvidia environment).

Follow the commands below to run all the framework:

  1. on a new terminal first launch the simulation
pixi run launch_sim_kinematics                                     (scene with kinematics)
pixi run launch_sim_dynamics                                       (scene with dynamics)

they run python mujoco_simulation/run_simulation.py --mode kinematics/dynamics, extra arguments are forwarded (e.g. pixi run launch_sim_kinematics --headless to run without the viewer, --lidar_rate to change the lidar frequency)

  1. on each new terminal, then launch all the other packages
pixi run launch_joy                                                (to use the joystick)
pixi run launch_rviz                                               (visualization)
pixi run launch_planners                                           (planning)
pixi run launch_controllers                                        (control)
pixi run launch_lidar_odometry                                     (tf and kiss-icp)
pixi run launch_slam                                               (slam-toolbox)
pixi run launch_state_publisher                                    (filter for encoder and lidar)
pixi run launch_plotjuggler                                        (plotting)
ros2 launch ydlidar_ros2_driver ydlidar_launch.py                  (ydlidar - only real robot, not included in the pixi environment)
  1. you can choose a goal pose in Rviz2 clicking 2D Goal Pose

Status

Still working in progress, the real robot exists but it’s not yet finalized!

评论

暂无评论