Git Product home page Git Product logo

choreonoid's Introduction

logo


Choreonoid is an open-source, lightweight, and extensible integrated graphical framework for robot development. You can develop your robots with various functions and resources of Choreonoid.

Functions

Model Visualization

Choreonoid works as a visualization tool. The provided GUI tools support editing model files, checking self-collisions, and calculating forward/inverse kinematics. Additionally, you can visualize sensor data, including camera images, point clouds, and forces/torques, on Choreonoid.

visualization

Dynamics Simulation

You can simulate the dynamics of robots and environments on Choreonoid. Light-load and accurate simulation environments accelerate your research and development on robot planning and control. Since the default physics engine is robust for contacts, Choreonoid has been utilized in the research on humanoid robots for over a decade.

simulation

(Robot: JAXON by JSK Laboratory | Field: from Humanoid Virtual Athletics Challenge )

Choreographing

Choreonoid provides a function for choreographing robot motions. Visualization tools and dynamics engines strongly support your motion editing. As an example, Choreonoid enabled the HRP-4C humanoid robot to dance with human dancers in 2010. You can see the video here.

choreographing

Potential

Choreonoid has been used in various situations. Application examples are shown in the following figures and the fields of application range from research to industry and entertainment. One of the advanced features of Choreonoid is extensibility, so you can easily add your own plugins suitable for your project with plentiful resources provided by both Choreonoid and third parties.

applications

Installation

To install Choreonoid, please see the installation page on the official document

ROS Support

ROS (currently, only ROS1) is supported. Please see our official document to set up Choreonoid with ROS.

Development

Choreonoid project is led by Dr. Shin'ichiro Nakaoka. After the start of the project in 2006, Choreonoid had been developed at National Institute of Advanced Industrial Science and Technology (AIST), Japan, until 2019. Currently, Choreonoid Inc. maintains this project.

License

Choreonoid is released under the MIT License.

Articles

Choreonoid was presented in the following articles:

  • S. Nakaoka, "Choreonoid: Extensible virtual robot environment built on an integrated GUI framework," 2012 IEEE/SICE International Symposium on System Integration (SII), 2012, pp. 79-85, doi: 10.1109/SII.2012.6427350. Best Paper Award (Robotics). [IEEE Xplore]
  • S. Nakaoka, "Choreonoid: Integrated Extensible GUI Environment for Robots," Journal of the Robotics Society of Japan, 2013, Vol. 31, Issue 3, pp. 226-231, 2013 doi: 10.7210/jrsj.31.226, written in Japanese. [J-STAGE]

Please refer to and/or cite them as necessary.

choreonoid's People

Contributors

algoryxjosef avatar arntanguy avatar fkanehiro avatar ga-sakamoto avatar gergondet avatar hansrobo avatar hattorishizuko avatar haudren avatar jun0 avatar kayusawa avatar kindsenior avatar matsu-sh avatar mehdi-benallegue avatar mitsuharu-morisawa avatar naoki-hiraoka avatar norihiro-ito avatar ompugao avatar orikuma avatar rafaelxero avatar rkoyama1623-2021 avatar s-nakaoka avatar snozawa avatar ssr-yuki avatar susaikum avatar y-masutani avatar yoheikakiuchi avatar yosuke avatar ytazz avatar yuohara avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

choreonoid's Issues

Camera device cannot get image in SimpleController

Issue overview

Since the following commit, Camera device cannot get image properly in SImpleController.
9d70912
(This issue was confirmed in the latest commit 2fe1349 as well.)

How to reproduce the issue

I added the following code to and tested the issue using sample/tutorial/Tank/step6.cnoid.

sample/tutorial/CMakeLists.txt

24 + add_subdirectory(tutorial/Tank)

sample/tutorial/Tank/CameraController.cpp

24    virtual bool control() override
25    {
26        printf("Camera name [%s] empty: %d, width: %d, height: %d\n",
27            camera->name().c_str(), camera->constImage().empty(), camera->constImage().width(), camera->constImage().height());
...

The console output after the simulation starts is as follows.

Camera name [Kinect] empty: 1, width: 0, height: 0
Camera name [Kinect] empty: 1, width: 0, height: 0
Camera name [Kinect] empty: 1, width: 0, height: 0
Camera name [Kinect] empty: 1, width: 0, height: 0
...

Issue analysis

After investigating from the commit diffs, I guessed that the problem is related to the "copyStateFrom" function in src/Body/Camera.cpp, which used to copy the image.
9d70912#diff-8966906dbbf119146333a766406604c2583e8b6d22b8071b6e1b2da14c8a3be3L69

This image copying process is done after copyCameraStateFrom, but within copyCameraStateFrom, the decision to copy an image is made based on the boolean value of isImageStateClonable.
9d70912#diff-8966906dbbf119146333a766406604c2583e8b6d22b8071b6e1b2da14c8a3be3L86-L90

Debugging shows that the value of isImageStateClonable is always False in the default configuration of Tank/step6 .cnoid.
Therefore, the image is not copied in copyCameraStateFrom above, but in the previous commit code, the image was then copied in copyStateFrom and SimpleController was able to properly get the image.

Further debugging shows that by changing the value of "Record vision data" in GLVisionSimulatorItem from False to True in the configuration of Tank/step6.cnoid, SimpleController can get image from the camera device even in the latest commit.

The following is the console output when the image is successfully acquired.

Camera name [Kinect] empty: 0, width: 320, height: 240
Camera name [Kinect] empty: 0, width: 320, height: 240
Camera name [Kinect] empty: 0, width: 320, height: 240
Camera name [Kinect] empty: 0, width: 320, height: 240
...

Question

I'm not sure what the proper behavior to assume is, should we be able to get images from SimpleController only if "Record vision data" is True, as it was after commit 9d70912 ?
Or should we be able to get the image regardless of the value of "Record vision data" as was the case prior to the above commit?

Choreonoid Crash after initialized 10 cameras

I have to place more than 20 Kinect cameras to simulate my project.
But when it exceeds more than 10 cameras Choreonoid crashes.
The error message in the terminal is "Segmentation fault (core dumped)". I couldn't get the proper cause of the error.
My system:
Core i7-4th gen, Memory 24 GB, Graphics: GeForce GTX 760

Stop loading project when components failed to load

Hi,

When loading a .cnoid project, the current behaviour seems to be to keep on loading no-matter-what, even if essential components failed to load. This creates many issues down the line, sometimes hard to debug such as other components failing to load too as a result, or worse the simulation not behaving as expected.

A better behavior would be to stop loading as soon as an "essential" component failed to load, and prevent the simulation from starting. Here is an example with the choreonoid-openrtm plugin, attempting to load PDcontroller.

Restoring BodyRTCItem "BodyRTC"
Config File "/home/arnaud/openrtp/bin/../lib/choreonoid-1.8/rtc/Virtual-JVRC1-RTC.conf" has been loaded.
RTC "PDcontroller" cannot be created by the RTC manager.
 RTC module file: "/home/arnaud/openrtp/bin/../lib/choreonoid-1.8/rtc/PDcontroller.so"
 Init function: PDcontrollerInit
 option: ?exec_cxt.periodic.rate=1000000&exec_cxt.periodic.type=ChoreonoidExecutionContext

Error: RTC "PDcontroller" cannot be created.

RTC "JVRC1Controller(Robot)0" has been created.
Restoring SensorVisualizer "SensorVisualizer"
Restoring BodyItem "longfloor"
Loading Body "/home/arnaud/openrtp/share/OpenHRP-3.1/sample/model/longfloor.wrl"
 -> ok!
Restoring AISTSimulatorItem "AISTSimulator"
Restoring PythonSimScriptItem "sim_mc.py"
Loading Python Script for Simulation "/home/arnaud/openrtp/share/hrpsys/samples/JVRC1/sim_mc.py"
 -> ok!
8 / 8 item(s) have been loaded.
Project "sim_mc.cnoid" has been completely loaded.

Here the error Error: RTC "PDcontroller" cannot be created. should be fatal: the plugin obviously knows that it could not be loaded, and in that case if PDcontroller does not exist, the simulation will not work (the robot will collapse on the ground). However, instead of stopping loading here, displaying the error message, and further preventing from running the simulation, it keeps on loading as if nothing happened, and allows the simulation to run and fail (in this case in a very obvious way, but we can easily imagine scenarios were it would fail more discretely, or where the actual failure message gets buried in the message log).

Is there a way that I don't know of to achieve such a behavior? If not, would you be willing to implement something like that?

Bumping choreonoid version

The current version on master is 1.8.0. However it has significantly diverged from the one we typically use here: https://github.com/isri-aist/choreonoid, that also happens to be version 1.8.0.

I'd like to have both on my machine, so that I can gradually upgrade our environment to stay up to date with master, and having the same version number makes it quite tricky. I actually got most of it working, at least for mc_rtc requirements. I still have a few lingering python issues for using this version to run on the real robots (related to CORBA). But stuff like https://github.com/isri-aist/hrpcnoid is much further from running ;)

Would you mind bumping the version number (say 1.9.0 or whatever you deem appropriate), and have the packages that depend on it explicitly require a version greater than that? I'm thinking choreonoid_ros for instance since it's not compatible with the isri-aist fork:

<depend version_gte="1.9">choreonoid</depend>

rotor inertia in mass matrix computation

Hi,

In the mass matrix computation, rotor inertia seems added twice.
Firstly, as a part of computing mass matrix, the inverse dynamics computation to obtain A_G * delta_i + b_G considers rotor inertia, as seen at https://github.com/choreonoid/choreonoid/blob/master/src/Body/InverseDynamics.cpp#L66.
Secondly, rotor inertia is also added at https://github.com/choreonoid/choreonoid/blob/master/src/Body/MassMatrix.cpp#L93.

typo comment?: motor inertia -> rotor inertia at https://github.com/choreonoid/choreonoid/blob/master/src/Body/MassMatrix.cpp#L93.

URDF Support

Currently URDF format is widely used around the world (including ROS community), and Choreonoid should support it as soon as possible.

On the other hand, as I discussed this issue with @s-nakaoka previousely, Choreonoid does not depend on ROS libraries. It is because Choreonoid is not a ROS-dependent application, and URDF is also used in non-ROS tools.

Compilation error with pybindgen when building with clang-9

Hi,

Building choreonoid with pybind11 support fails with clang-9 and c++17 (I use clang by default, and choreonoid automatically selected c++17 since I didn't specify CMAKE_CXX_STANDARD explicitely), there is an error:

In file included from /home/arnaud/src/catkin_ws_choreonoid/src/choreonoid/src/Base/pybind11/PyQtGui.cpp:5:
In file included from /home/arnaud/src/catkin_ws_choreonoid/src/choreonoid/src/Base/pybind11/PyQString.h:9:     
/home/arnaud/src/catkin_ws_choreonoid/src/choreonoid/thirdparty/pybind11-2.4.3/include/pybind11/pybind11.h:1008:9: error: no matching function for call to 'operator delete'
        ::operator delete(p, s, std::align_val_t(a));                                                                                                                                                          
        ^~~~~~~~~~~~~~~~~                                                                   
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/new:149:6: note: candidate function not viable: no known conversion from 'pybind11::size_t' (aka 'unsigned long') to 'std::align_val_t' for 2nd argument
void operator delete(void*, std::align_val_t, const std::nothrow_t&)                                                                                                                               
     ^                                                                                          
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/new:147:6: note: candidate function not viable: requires 2 arguments, but 3 were provided                                                               
void operator delete(void*, std::align_val_t)                                                                                                                                                               
     ^                                                                                                                                                                                                            
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/new:138:6: note: candidate function not viable: requires 2 arguments, but 3 were provided
void operator delete(void*, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT                                             
     ^                                                                                                                        
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/new:174:13: note: candidate function not viable: requires 2 arguments, but 3 were provided
inline void operator delete  (void*, void*) _GLIBCXX_USE_NOEXCEPT { }                                             
            ^                                                                                                                                                                                               
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/new:124:6: note: candidate function not viable: requires 1 argument, but 3 were provided                                                      
void operator delete(void*) _GLIBCXX_USE_NOEXCEPT           

As reported in pybind/pybind11#1604, this problem can be solved by enabling sized deallocation under Clang (-fsized-deallocation). A fix for it was pushed upstream on pybind11 side (pybind/pybind11@759221f). However you are building against version 2.4.3 of pybind11 from the thirdparty folder which does not have this patch.

What's the reason behind not using the system's version of pybind11? Can you look into fixing this particular issue?

On a more general note, do you have continuous integration set-up for choreonoid? If not, that would greatly help in catching this kind of issues in the future ;)

OpenRTMプラグインの導入ができない

windows10にて、最新のchoreonoid開発版にOpenRTMプラグイン導入を考えています。
開発版のドキュメント(https://choreonoid.org/ja/documents/latest/install/build-windows.html#id8)やopenRTMプラグイン(https://github.com/OpenRTM/choreonoid-openrtm)を参照してインストール作業を行いました。
choreonoidにcmakeを行う段階で「ENABLE_CORBA」を追加できず、openRTMプラグイン導入がうまくいきいません。
最新のchoreonoid開発版では、openRTMプラグインの導入はできなくなってしまったのでしょうか。
またプラグイン側にはfor OpenRTM-aist 1.1.2とありますが、最新バージョンのOpenRTM-aist 1.2.2に対応していますか。

Slow simulation speed with newer version of Choreonoid

Recently, our lab started using the master branch of https://github.com/choreonoid/choreonoid from https://github.com/isri-aist/choreonoid (fixed at the version of November 2019). The change caused the realtime ratio (compute time / simulation time) to slow down by about 1.3x. We are using AISTSimulator and the project file for the sample is https://github.com/jrl-umi3218/mc_openrtm/blob/master/projects/JVRC1/cnoid/sim_mc.in.cnoid

We would appreciate any ideas on how to achieve the same simulation speed as before.

Bug about RPY Interpolation

The RPY angles in PoseSeqPlugin are interpolated using a standard interpolation method

info.isValid = ::interpolate<6, LinkSample>(info.samples, info.iter, currentTime, xyzrpy.data());

without considering the issue of singularity. This can cause errors in the interpolated output angles. I recommend using quaternion slerp interpolation, with a reference implementation as follows:

double r = (x - s0.x) / (s1.x - s0.x);
if constexpr (std::is_same_v<SampleType, LinkSample>) {
    Eigen::Quaterniond q0 = 
        Eigen::AngleAxisd(s0.c[5].y, Eigen::Vector3d::UnitZ()) *
        Eigen::AngleAxisd(s0.c[4].y, Eigen::Vector3d::UnitY()) *
        Eigen::AngleAxisd(s0.c[3].y, Eigen::Vector3d::UnitX());
    Eigen::Quaterniond q1 =
        Eigen::AngleAxisd(s1.c[5].y, Eigen::Vector3d::UnitZ()) *
        Eigen::AngleAxisd(s1.c[4].y, Eigen::Vector3d::UnitY()) *
        Eigen::AngleAxisd(s1.c[3].y, Eigen::Vector3d::UnitX());
    Eigen::Quaterniond q_interp = q0.slerp(r, q1);
    Eigen::VectorXd RPY = Eigen::EulerAngles<double, Eigen::EulerSystemZYX>(q_interp.normalized().toRotationMatrix()).angles().reverse();
    out_result[3] = RPY[0];
    out_result[4] = RPY[1];
    out_result[5] = RPY[2];
}

Thank you for your contribution.

Choreonoid-1.7.0-win64.exe

hello everyone, i am one of people who has nothing idea how to comply the software by themselves.

i searched the post there is .exe for windows user, but the lastest one is 1.5 ver. only.

since the 1.7 has been released for 3yrs already, will it be possible to provide 1.7.exe so more newbie can try this software with ease ?

thx everyone in advance.

Where are the Hrpsys31 and RemoteAccessPlugin?

Hi,
In bb6c045 you removed the Hrpsys31Plugin and RemoteAccessPlugin from the main source tree. I however couldn't find where they have been moved to, could you point it out?

It would be great if the NEWS file could indicate these new repositories when you split them.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.