GithubHelp home page GithubHelp logo

auturbo / stridesim Goto Github PK

View Code? Open in Web Editor NEW
16.0 2.0 6.0 371 KB

StrideSim is a Nvidia Isaac Sim-based robot simulator, offering a realistic environment and compatibility with ROS2

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

Python 77.91% Batchfile 6.01% Shell 3.71% PowerShell 12.38%
isaacsim quadruped-robot ros2-humble simulation

stridesim's People

Contributors

harderthan avatar kimdoyoung1997 avatar mqjinwon avatar

Stargazers

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

Watchers

 avatar  avatar

stridesim's Issues

Feature: setting LiDAR sensor

Is your feature request related to a problem? Please describe.
LiDAR code 리팩토링 및 configuration을 ouster사의 OS1-32와 같게 세팅하기

Describe the solution you'd like

RotatingLidarPhysX(prim_path=self.config.get("prim_path"), name="range_sensor",

RotatingLidarPhysX 함수 인자 확인 및 변경

Additional context

class Lidar(Sensor):
"""
The class that implements the Lidar sensor. This class inherits the base class Sensor.
"""
def __init__(self, config=None):
"""
Initialize the Lidar class
Args:
"""
if config is None:
config = {}
else:
assert isinstance(config, dict), "The config parameter must be a dictionary."
self.config = config
super().__init__(sensor_type="Lidar", update_frequency=self.config.get("update_frequency", 10.0))
# Save the state of the sensor
self._state = {
"points": [],
}
self.lidar_interface = _range_sensor.acquire_lidar_sensor_interface() # Used to interact with the LIDAR
self.lidar_flag_ = False
@property
def state(self):
return self._state
@Sensor.update_at_frequency
def update(self, state: State, dt: float):
if self.lidar_flag_ is True:
pointcloud = self.lidar_interface.get_point_cloud_data(self.config.get("prim_path"))
# print(pointcloud)
self._state["points"] = pointcloud
else:
my_world = World.instance()
## check there is world
if my_world is None:
pass
else:
self._lidar = my_world.scene.add(
RotatingLidarPhysX(prim_path=self.config.get("prim_path"), name="range_sensor",
rotation_dt = 10
)
)
self._lidar.set_fov([360, 30])
self._lidar.set_resolution([0.4, 0.4])
self._lidar.set_valid_range([0.1, 6])
self._lidar.enable_visualization(high_lod=True,
draw_points=True,
draw_lines=False)
self.lidar_flag_ = True
return self._state

Feature: Add ROS 2 TF topic

Is your feature request related to a problem? Please describe.
현재 ROS 2 backend에 tf를 발행하는 토픽이 없음. 기능 추가 필요

Describe the solution you'd like
Isaacsim에서 usd 파일을 기반으로 제공해주는 정보를 받아와서, tf를 구성해야할 것으로 판단
world, current_stage 등에서 vechicle을 찾아야할 것으로 보임

찾으면, ros2_backend.py 에 추가

Describe alternatives you've considered
최악의 경우, Omnigraph를 구성해야 함. 좋은 방법은 아님

Feature: Make UI beatuiful

Is your feature request related to a problem? Please describe.
기본 기능만 있는 UI를 좀 더 풍성하게 변경하기

Describe the solution you'd like
exts/stride.simulator/stride/simulator/params.py

다양한 선택지를 고를 수 있도록 param.py 파일 수정 하기

https://github.com/PegasusSimulator
의 UI 부분을 참고하여, extension.py을 UI 폴더의 코드로 옮기기

Additional context
image
현재 UI는 Init world를 눌러, world를 만들고, Environment를 눌러 default plane을 만들고, Simulation을 눌러 anymal C를 만드는 구조임.
여기서 environment를 선택하여 고를 수 있고, 로봇을 고를 수 있도록 UI가 변경되면 좋을 것 같음.

Bug: directory path error

Describe the bug
cfg파일 경로를 제대로 찾지 못하는 문제 발생

To Reproduce
Steps to reproduce the behavior:

  1. StrideSim이 아닌 다른 디렉토리에서 Isaacsim을 실행
  2. 아래 사진처럼 오류 발생

Screenshots

image

Duplicate ros node

Describe the bug
image
위와 같이 /anymal_c의 node가 중복하여 생성되는 문제 발생

To Reproduce
첫번째 터미널

source /opt/ros/humble/setup.bash
ISAACSIM

두번째 터미널

source /opt/ros/humble/setup.bash
export ROS_DOMAIN_ID=15

ros2 node list

Expected behavior
/anymal_c의 node가 하나만 생성되어야함

Feature: Add new quadruped robot Go1

Is your feature request related to a problem? Please describe.
Anymal C보다는 Go1으로 프로젝트를 진행하는 것이 좋을 것 같음.

  1. 프로젝트원 중 실제 Go1 로봇을 운용할 수 있는 분이 있음
  2. 강화학습 논문 및 코드들 중 Go1을 활용한 것들이 많음

Describe the solution you'd like
anymalc.py를 참고하여 go1.py를 만들기

예상되는 애로사항

  • 현재 코드들은 anymalc에 맞춰져 짜여져 있기 때문에, 코드를 일반화 시키는 것이 어려울 것임

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.