/***************************************************************************************************************/
 *
 *                                    (c)    光明工作室  2017-2037  COPYRIGHT
 *
 *   光明工作室团队成员大部分来自全国著名985、211工程院校。具有丰富的工程实践经验,
 *本工作室热忱欢迎大家的光临。工作室长期承接嵌入式开发、PCB设计、算法仿真等软硬件设计。
 *
 *
 *1)基于C8051、AVR、MSP430单片机开发。
 *2)基于STM32F103、STM32F407等ARM处理器开发。(IIC、SPI、485、WIFI等相关设计)
 *3)基于C6678、DM388等DSP处理器开发。(视频、网络、通信协议相关设计)
 *4)基于QT、C#软件开发。
 *5)基于OPENCV、OPENGL图像处理算法开发。(基于LINUX、WINDOWS、MATLAB等)
 *6)无人机飞控、地面站程序开发。(大疆、PIX、 qgroundcontrol、missionplanner、MAVLINK)
 *7)  ROS机器人操作系统下相关开发。
 *8)LINUX、UCOSII、VXWORKS操作系统开发。
 *
 *
 *                                                                                                       联系方式:
 *                                                                                                        QQ:2468851091 call:18163325140
 *                                                                                                        Email:2468851091@qq.com
 *
/ ****************************************************************************************************************/


我们组正在开发的Drake: RobotLocomotion/drake · GitHub 用于机器人动力学建模,模拟和控制,集成了运动规划,稳定性分析。应用的例子包括了人形机器人,飞机(四旋翼,固定翼)和机械臂等。语言是用MATLAB和C++(绝大多数动力学的函数同时提供了matlab和c++的接口)。这次的DARPA Robotics Challenge中MIT队的控制器也包含在这个软件中了。

关于这个软件中所运用的机器人理论知识,可以参考edx上的公开课程underactuated roboticsUnderactuated Robotics

根据评论添加一部分回答。
  1. 组的背景?
    组的网站在这里 groups.csail.mit.edu/lo
  2. 为什么不直接用ROS?
    一是因为我们做研究需要的很多功能是ROS不提供的,比如说判定一个动态系统的region of attraction,这时候需要搜索一个Lyapunov function,ROS是没有这个功能的。二是因为我们的侧重点和ROS不一样。比如说ROS中的gazebo模拟器更侧重模拟的速度,而我们更注重模拟的精度。三是因为ROS太大了,其中核心的通信模块可以用LCMLCM: Lightweight Communications and Marshalling (LCM) 替换,这是一个轻量级的通讯模块。
  3. 是否有机械臂的关节规划?
    我们有计算forward kinematics和inverse kinematics的引擎,支持MATLAB和C++。对于避障目前是用的Bullet来计算物体之间的距离。做inverse kinematics的例子包括在ABB IRB140 arm上drake/runPlanning.m at master · RobotLocomotion/drake · GitHub,和在Atlas机器人上drake/testIK.m at master · RobotLocomotion/drake · GitHub

hector quadrotor 是德国老牌理工学校Technische Universität Darmstadt大学开发的ros包,可以用于用于多旋翼的建模,控制和仿真。

GitHub - libing64/hector_quadrotor: hector_quadrotor contains packages related to modeling, control and simulation of quadrotor UAV systems.
GitHub - tu-darmstadt-ros-pkg/hector_quadrotor: hector_quadrotor contains packages related to modeling, control and simulation of quadrotor UAV systems.

hector quadrotor 整合了ros和gazebo,可以进行uav相关的很多仿真,例如飞行动力学,机载传感器例如imu、gps、camera,复杂环境仿真等等。

1. modeling and control
作者利用风洞实验等测得了四旋翼的所有动力学参数,然后拿这些参数进行仿真,之后又拿仿真数据和实际飞行数据进行对比,结果相当吻合。

如果你想自己写飞控但又不想炸鸡,完全可以ros里进行仿真,仿真通过之后再把程序放到进飞机实际测试。
在仿真里写飞控还有一个好处就是飞机的所有state都可以使用ground truth进行控制,避免和estimation问题耦合。


gkmm.tu-darmstadt.de/pu

2. sensor fusion
hector quadrotor上集成了目前uav上最常见的传感器,imu, magnetometer, gps, lidar, sonar, camear, stereo camera, kinect, 3d lidar, spinning lidar...
拿来做传感器融合仿真非常方便,所有state都有ground ground truth,哪里融合出错了非常容易发现。noise level也可以自己定义
使用hector quadrotor的数据,我自己写的基于ekf姿态融合跟 6d位置融合,att_ekf核心代码不到150行,6d pose_ekf 核心代码大约300行(Eigen真是高效)

GitHub - libing64/att_ekf: Extented Kalman Filter for attitude estimation using ROS
GitHub - libing64/pose_ekf: Extented Kalman Filter for 6D pose estimation using gps, imu, magnetometer and sonar sensor.

att_ekf, 长坐标轴是estimation,短的是ground truth
pose_ekf, 长坐标轴是estimation,短的是ground truth

我也试过跑optical flow 跟stereo visual odomety,效果都蛮好。laser-based slam上面的paper中已经实现了,作者把它放在了hector_localization这个包.



3. slam
hector quadrotor用于laser-based slam非常容易实现,但是没看到用hector quadrotor做camera-based slam的,但是我觉得既然光流和stereo vo都可以跑的很好,那么用来做slam应该不成问题,起码我自己是打算这么干的。

laser-based 2d slam


===========================================
2016.03.23 更新

提到了orb slam,我之前只看过paper并没有运行过
hector quadrotor仿真环境中控制uav飞圆形(几十圈),下图是用orb slam(monocular version) 跑出来的轨迹和点云。

单目能跑出这样的精度而且是实时的,我还是蛮惊讶的

为了让orb slam和hector quadrotor同时实时运行,对orb slam的接口做了修改
GitHub - libing64/ORB_SLAM2: Real-Time SLAM for Monocular, Stereo and RGB-D Cameras, with Loop Detection and Relocalization Capabilities

基于ROS的项目在Github上不要太多,干脆从ROS开始吧:
1.ROS core stacks · GitHub
应该说现在搞机器人相关应用的机构和研究所,几乎都会开发ROS相关的应用接口,强大和统一的通信方式,省去了很多重复的劳动,各种相关和热门的传感器以及平台也都提供了ROS相关的接口,如果有一台Linux笔记本,想做机器人相关的项目,那就赶紧下载一个ROS开始吧。
具体版本选择参见官网,有linux,c++或python基础,跟着官方tutorial应该很快就可以上手了。
ROS8周年宣传视频,需要翻墙,youtube.com/watch?

2. ROS支持的相关机器人和传感器
Baxter github.com/RethinkRobot

PR2 github.com/PR2

Turtlebot turtlebot · GitHub

DJI的开发平台 Matrix-100 GitHub - dji-sdk/Onboard-SDK-ROS: ROS packages for DJI onboard SDK, all new data structures

Gazebo 没有这些实体机器人?没关系,完全ROS支持的Gazebo模拟环境,你值得拥有:
GitHub - ros-simulation/gazebo_ros_pkgs: Wrappers, tools and additional API's for using ROS with Gazebo. Formally simulator_gazebo stack

在Gazebo环境下,基本上已经可以完整解决很多机器人相关的问题了。

传感器相关的Sick 雷达,Velodyne全景雷达,Kinect摄像头等,都是ROS官方支持的,驱动安装相当方便,这里就不详细说了,基本上市面上流行的传感器和IMU都有官方支持,没有的话在github上也能搜的到ROS相关接口。

3. Mapping 和 SLAM
Gmapping GitHub - ros-perception/slam_gmapping: http://www.ros.org/wiki/slam_gmapping
比较早但是非常好用的一个包,有一个激光雷达或者Kinect,搭配移动机器人就可以实现一个2D的SLAM解决方案,如果没有机器人的话,用Gazebo搭配一个模拟Turtlebot一样可以实现。定位精度之高有时候可以当groud-truth用。

ORB_SLAM GitHub - raulmur/ORB_SLAM: A Versatile and Accurate Monocular SLAM
学术界目前最火的Monocular SLAM解决方案,除了摄像头不需要其他任何相关里程计信息,来自西班牙萨拉戈萨大学,只需要单摄像头就可以完成,同样支持Kinect,并有ROS接口,有摄像头的都可以下载下来跑一跑试试。ORB feature相比传统Feature提取效率大大提升。

ETH的2.5D MappingGitHub - ethz-asl/grid_map: Universal grid map library for mobile robotic  mapping
ETH的机器人相关研究一直都是世界顶级的,ETHZ ASL · GitHub 下面的几乎每一个项目,都是一个机器人领域相关研究的分支。这里就不一一列举了。

4 Planning 和 Kinematics
官方非常基础的一个运动学相关的package。
GitHub - ros-planning/moveit_ros: MoveIt! ROS

----------总结陈词的分割线-------------
ROS在学术界和工业界的应用发展还远远没有止步,目前国内国外的相关机器人工程师招聘,也都有ROS相关的需求,比如前百度IDL副院长余凯的地平线机器人公司等等。把ROS玩好,可以大大的体会到做机器人相关研究的乐趣,希望有相关兴趣的同学都参与进来。

----------夹带私货的分割线-------------
最后安利一个自己的project,如果大家有人买了Leap motion control,同样最近非常火,并且经常被各种创业鸡汤项目拿来唬人的手势深度传感器,我给它写了一个简单的ROS接口github.com/CityU-MBE/le
我们组正在进行的一个深度学习机器人应用的项目,主要是Semantic Mapping和基于CNN的壁障,目前比较搓,后期也可能弃坑,大家看看就好
GitHub - libcnn/libcnn: libcnn++

----------不定时更新的分割线------------
GitHub - arrenglover/openfabmap: Open-source C++ code for the FAB-MAP visual place recognition algorithm
FAB-SLAM,  基于appearance, chowliu-tree的slam方法,用bag of words的方式去训练图像分类,从而实现基于地图数据库的定位。BOWtrainer已写入opencv标准库。来自一篇IJRR高引用论文,出自牛津大学著名的Paul Newman教授组。感觉比ORBSLAM来的简单一点,代码的注释也比较清楚,比较容易看懂。
Teensy: 电路+Library,可以DIY也可以买。大小类似于Arduino Pro Mini,但是性能和Arduino DUE一个级别。
PaulStoffregen/cores · GitHub
FreeIMU(这个项目的创始人是个英年早逝的意大利PhD在读学生,很可惜)。
mjs513/FreeIMU-Updates · GitHub
两个加一起可以做飞控。

法国inria研究所的人型机器人Poppy
全部开源,可3d打印,非常好看,设计也相当出色,缺点是造价高昂,用的韩国Dynamixel系列舵机,以及无法自主行走
是来强答的,因为下面说的不一定有趣。
无人机著名的开源社区是ArduPilot(网址:Community),他们有一些项目是托管在GitHub上的。他们的GitHub主页是:ArduPilot · GitHub:
搬运一下他们的项目列表Welcome to the ArduPilot Development Site),包括了飞控固件、地面站软件、MavLink通讯协议、无人机仿真系统等

Project List

The ArduPilot system is made up of (or relies upon) several different projects which are listed below. Those marked with an asterix (*) are peer projects that have their own owners outside the core ArduPilot dev team.

  • DroneKit (site) - APM SDK for apps running on vehicles, mobile devices and/or in the cloud.
  • Plane (wiki,code) - autopilot for planes
  • Copter (wiki,code) - autopilot for multicopters and traditional helicopters
  • Rover (wiki,code) - autopilot for ground vehicles
  • Mission Planner (wiki,code) - the most commonly used ground station written in C# for windows but also runs on Linux and MacOS via mono
  • APM Planner 2.0 (wiki,code) is a ground station specifically for APM written in C++ using the Qt libraries
  • MAVProxy (wiki) - command line oriented and scriptable ground station (mostly used by developers)
  • MinimOSD (wiki,code) - on-screen display of flight data
  • AndroPilot (user guide, code, google play) - android ground station
  • DroneAPI (tutorial,droneshare) - A developer API for drone coprocessors and web applications.
  • DroidPlanner2 (wiki,code,google play) - android ground station
  • QGroundControl is an alternative ground station written in C++ using the Qt libraries
  • PX4 (wiki) - designers of the PX4FMU and owners of the underlying libraries upon which Plane/Copter/Rover use when running on the PX4FMU
  • MAVLink (wiki) - the protocol for communication between the ground station, flight controller and some periphers including the OSD. A “Dummy’s Guide” to working with MAVLink ishere.
其中最著名的恐怕是Mission Planner,以至于我去很多展览会,都能看到大家将这个开源软件改来改去,我表示呵呵呵。这个软件的界面是这样的:


业内人士是不是看到以后很熟悉啊!!
这里尤其说一下他们的Android项目Tower。Tower本身是一个APP,通过3DRservice(另一个APP,主要用于将远程连接过程封装)与无人机连接。我花了好久来研究这两个软件的方方面面,绘制流程图和UML,还是很有收获滴(我就是这么一个认真的孩子,你打我啊~)。
3DRServices
Tower

下面是Tower的主界面。
开源社区的无人机大抵逃不出下面的结构。
ArduPilot配合使用的飞控 PiXWahk 淘宝上就有卖,大概2000多能买到,而且附带很多配件,比如GPS和数传模块。
最后是私货,我写过一篇介绍MavLink协议的博客,请看 【无人机开发】通讯协议MavLink详解
以后有时间了,会多些一些关于无人机开发方面的文章,欢迎关注~
- Repetier Software
源代码可以在某度下载
Paparazzi UAV
Paparazzi UAV (Unmanned Aerial Vehicle) is an open-source drone hardware and software project encompassing autopilot systems for multicopters/multirotors, fixedwing, helicopters and hybrid aircraft.

中文介绍:m.leiphone.com/news/201
官方wiki: wiki.paparazziuav.org/w
Github github.com/paparazzi/
适合嵌入式平台的C的解释器,代码量很小。github.com/zsaleeba/pic
Gladius水下无人机,大概是我能想到国内民用级别最好玩的ROV了。
有趣的话,大概有这么几个点。
1.海钓专用。科普:海钓_360百科。常规的海钓依凭渔夫的经验寻找水域,然后进行漫长的、不可知的钓鱼过程。但是有了Gladius水下无人机后,能下潜海中,通过4K超高清视频实时传输到手机上,从而实现可视化找鱼。这意味着:钓鱼不再是一种漫长而未知的过程,而是看见、捕捉、执行的高效率过程。
2.实时分享到社交平台。Gladius水下无人机通过半缆绳的设计结构,能高速稳定传输图像资料,及时分享到社交平台和图像下载。
3.船底检查。全球中大型货轮、客轮、大型渔船等总计超过10万艘,中国占比30%,需要经常进行船底外部检查。常规的检查方式是通过潜水员(蛙人)下水进行人工检查。不仅耗时长进度慢,而且人力成本较高!但是Gladius水下无人机能够轻松潜水百米,游刃有余地穿梭在船底,搭配智能辅助照明系统检查。不仅速度快效率高,还能传输高清影像供船长参考船底的具体情况。
当然,还有很多有趣的玩法,比如水下摄影、游艇娱乐等等……最后放张照片给大伙儿瞅瞅。
Pixhawk,开源飞控
drone-kit 通过mavlink协议控制pixhawk的android服务封装
tower 上述service的客户端

openworm/OpenWorm · GitHub
可以把它移植到机器人上面玩

openrov国外的一款开源水下机器人。
diydrone/ardupilot,pixhawk
PIXHAWK 无人机 导师叫我学这个,刚接触了1天一头雾水
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐