diff --git a/c_transpiler/assets/sim_api.rs b/c_transpiler/assets/sim_api.rs index 66303e6..fd4b20f 100644 --- a/c_transpiler/assets/sim_api.rs +++ b/c_transpiler/assets/sim_api.rs @@ -1,385 +1,457 @@ use crate::RemoteApiClientInterface; +#[doc=r#"The list of API functions below allows you to access many CoppeliaSim parameters. There are however too many parameters in CoppeliaSim to have a specific API function for each one of them. Auxiliary parameters can be accessed via a set of given functions that use object parameter IDs. Refer also to the global parameter IDs. +All units going to, or coming from the API are in meters, kilograms, seconds and radians or a combination of those (unless otherwise explicitly indicated). +"#] pub trait Sim : RemoteApiClientInterface { requests!{ "sim", -(sim_set_joint_max_force,"setJointMaxForce",(object_handle:i64,force_or_torque:f64)->()), -(sim_get_joint_max_force,"getJointMaxForce",(joint_handle:i64)->f64), -(sim_create_pure_shape,"createPureShape",(primitive_type:i64,options:i64,sizes:Vec,mass:f64),opt(precision:Vec)->i64), -(sim_remove_object,"removeObject",(object_handle:i64)->()), -(sim_get_vision_sensor_depth_buffer,"getVisionSensorDepthBuffer",(sensor_handle:i64),opt(pos:Vec,size:Vec)->(Vec,Vec)), -(sim_get_vision_sensor_char_image,"getVisionSensorCharImage",(sensor_handle:i64),opt(pos:Vec,size:Vec)->(Vec,Vec)), -(sim_set_vision_sensor_char_image,"setVisionSensorCharImage",(sensor_handle:i64,image:Vec)->()), -(sim_get_object_selection,"getObjectSelection"->Vec), -(sim_set_object_selection,"setObjectSelection",(object_handles:Vec)->()), -(sim_get_string_signal,"getStringSignal",(signal_name:String)->Option>), -(sim_get_int32_signal,"getInt32Signal",(signal_name:String)->Option), -(sim_get_float_signal,"getFloatSignal",(signal_name:String)->Option), -(sim_acquire_lock,"acquireLock"->()), -(sim_add_drawing_object,"addDrawingObject",(object_type:i64,size:f64,duplicate_tolerance:f64,parent_object_handle:i64,max_item_count:i64),opt(color:Vec)->i64), -(sim_add_drawing_object_item,"addDrawingObjectItem",(drawing_object_handle:i64,item_data:Vec)->i64), -(sim_add_force,"addForce",(shape_handle:i64,position:Vec,force:Vec)->()), -(sim_add_force_and_torque,"addForceAndTorque",(shape_handle:i64),opt(force:Vec,torque:Vec)->()), -(sim_add_graph_curve,"addGraphCurve",(graph_handle:i64,curve_name:String,dim:i64,stream_ids:Vec,default_values:Vec,unit_str:String),opt(options:i64,color:Vec,curve_width:i64)->i64), -(sim_add_graph_stream,"addGraphStream",(graph_handle:i64,stream_name:String,unit:String),opt(options:i64,color:Vec,cyclic_range:f64)->i64), -(sim_add_item_to_collection,"addItemToCollection",(collection_handle:i64,what:i64,object_handle:i64,options:i64)->()), -(sim_add_log,"addLog",(verbosity_level:i64,log_message:String)->()), -(sim_add_particle_object,"addParticleObject",(object_type:i64,size:f64,density:f64,params:Vec,life_time:f64,max_item_count:i64),opt(color:Vec)->i64), -(sim_add_particle_object_item,"addParticleObjectItem",(object_handle:i64,item_data:Vec)->()), -(sim_add_referenced_handle,"addReferencedHandle",(object_handle:i64,referenced_handle:i64)->()), -(sim_add_script,"addScript",(script_type:i64)->i64), -(sim_adjust_view,"adjustView",(view_handle_or_index:i64,associated_viewable_object_handle:i64,options:i64),opt(view_label:String)->i64), -(sim_align_shape_bb,"alignShapeBB",(shape_handle:i64,pose:Vec)->i64), -(sim_alpha_beta_gamma_to_yaw_pitch_roll,"alphaBetaGammaToYawPitchRoll",(alpha_angle:f64,beta_angle:f64,gamma_angle:f64)->(f64,f64,f64)), -(sim_announce_scene_content_change,"announceSceneContentChange"->i64), -(sim_associate_script_with_object,"associateScriptWithObject",(script_handle:i64,object_handle:i64)->()), -(sim_auxiliary_console_close,"auxiliaryConsoleClose",(console_handle:i64)->i64), -(sim_auxiliary_console_open,"auxiliaryConsoleOpen",(title:String,max_lines:i64,mode:i64),opt(position:Vec,size:Vec,text_color:Vec,background_color:Vec)->i64), -(sim_auxiliary_console_print,"auxiliaryConsolePrint",(console_handle:i64,text:String)->i64), -(sim_auxiliary_console_show,"auxiliaryConsoleShow",(console_handle:i64,show_state:bool)->i64), -(sim_broadcast_msg,"broadcastMsg",(message:serde_json::Value),opt(options:i64)->()), -(sim_build_identity_matrix,"buildIdentityMatrix"->Vec), -(sim_build_matrix,"buildMatrix",(position:Vec,euler_angles:Vec)->Vec), -(sim_build_matrix_q,"buildMatrixQ",(position:Vec,quaternion:Vec)->Vec), -(sim_build_pose,"buildPose",(position:Vec,euler_angles_or_axis:Vec),opt(mode:i64,axis2:Vec)->Vec), -(sim_call_script_function,"callScriptFunction",(function_name:String,script_handle:i64),opt(in_arg:serde_json::Value)->serde_json::Value), -(sim_camera_fit_to_view,"cameraFitToView",(view_handle_or_index:i64),opt(object_handles:Vec,options:i64,scaling:f64)->i64), -(sim_change_entity_color,"changeEntityColor",(entity_handle:i64,new_color:Vec),opt(color_component:i64)->Vec), -(sim_check_collision,"checkCollision",(entity1_handle:i64,entity2_handle:i64)->(i64,Vec)), -(sim_check_collision_ex,"checkCollisionEx",(entity1_handle:i64,entity2_handle:i64)->(i64,Vec)), -(sim_check_distance,"checkDistance",(entity1_handle:i64,entity2_handle:i64),opt(threshold:f64)->(i64,Vec,Vec)), -(sim_check_octree_point_occupancy,"checkOctreePointOccupancy",(octree_handle:i64,options:i64,points:Vec)->(i64,i64,i64,i64)), -(sim_check_proximity_sensor,"checkProximitySensor",(sensor_handle:i64,entity_handle:i64)->(i64,f64,Vec,i64,Vec)), -(sim_check_proximity_sensor_ex,"checkProximitySensorEx",(sensor_handle:i64,entity_handle:i64,mode:i64,threshold:f64,max_angle:f64)->(i64,f64,Vec,i64,Vec)), -(sim_check_proximity_sensor_ex2,"checkProximitySensorEx2",(sensor_handle:i64,vertices:Vec,item_type:i64,item_count:i64,mode:i64,threshold:f64,max_angle:f64)->(i64,f64,Vec,Vec)), -(sim_check_vision_sensor,"checkVisionSensor",(sensor_handle:i64,entity_handle:i64)->(i64,Vec,Vec)), -(sim_check_vision_sensor_ex,"checkVisionSensorEx",(sensor_handle:i64,entity_handle:i64,return_image:bool)->Vec), -(sim_clear_float_signal,"clearFloatSignal",(signal_name:String)->()), -(sim_clear_int32_signal,"clearInt32Signal",(signal_name:String)->()), -(sim_clear_string_signal,"clearStringSignal",(signal_name:String)->()), -(sim_close_scene,"closeScene"->i64), -(sim_combine_rgb_images,"combineRgbImages",(img1:Vec,img1_res:Vec,img2:Vec,img2_res:Vec,operation:i64)->Vec), -(sim_compute_mass_and_inertia,"computeMassAndInertia",(shape_handle:i64,density:f64)->i64), -(sim_convex_decompose,"convexDecompose",(shape_handle:i64,options:i64,int_params:Vec,float_params:Vec)->i64), -(sim_copy_paste_objects,"copyPasteObjects",(object_handles:Vec),opt(options:i64)->Vec), -(sim_copy_table,"copyTable",(original:Vec)->Vec), -(sim_create_collection,"createCollection",opt(options:i64)->i64), -(sim_create_dummy,"createDummy",(size:f64)->i64), -(sim_create_force_sensor,"createForceSensor",(options:i64,int_params:Vec,float_params:Vec)->i64), -(sim_create_heightfield_shape,"createHeightfieldShape",(options:i64,shading_angle:f64,x_point_count:i64,y_point_count:i64,x_size:f64,heights:Vec)->i64), -(sim_create_joint,"createJoint",(joint_type:i64,joint_mode:i64,options:i64),opt(sizes:Vec)->i64), -(sim_create_octree,"createOctree",(voxel_size:f64,options:i64,point_size:f64)->i64), -(sim_create_path,"createPath",(ctrl_pts:Vec),opt(options:i64,subdiv:i64,smoothness:f64,orientation_mode:i64,up_vector:Vec)->i64), -(sim_create_point_cloud,"createPointCloud",(max_voxel_size:f64,max_pt_cnt_per_voxel:i64,options:i64,point_size:f64)->i64), -(sim_create_primitive_shape,"createPrimitiveShape",(primitive_type:i64,sizes:Vec),opt(options:i64)->i64), -(sim_create_proximity_sensor,"createProximitySensor",(sensor_type:i64,sub_type:i64,options:i64,int_params:Vec,float_params:Vec)->i64), -(sim_create_shape,"createShape",(options:i64,shading_angle:f64,vertices:Vec,indices:Vec,normals:Vec,texture_coordinates:Vec,texture:Vec,texture_resolution:Vec)->i64), -(sim_create_texture,"createTexture",(file_name:String,options:i64),opt(plane_sizes:Vec,scaling_uv:Vec,xy_g:Vec,fixed_resolution:i64,resolution:Vec)->(i64,i64,Vec)), -(sim_create_vision_sensor,"createVisionSensor",(options:i64,int_params:Vec,float_params:Vec)->i64), -(sim_destroy_collection,"destroyCollection",(collection_handle:i64)->()), -(sim_destroy_graph_curve,"destroyGraphCurve",(graph_handle:i64,curve_id:i64)->()), -(sim_duplicate_graph_curve_to_static,"duplicateGraphCurveToStatic",(graph_handle:i64,curve_id:i64),opt(curve_name:String)->i64), -(sim_execute_script_string,"executeScriptString",(string_to_execute:String,script_handle:i64)->(i64,serde_json::Value)), -(sim_export_mesh,"exportMesh",(fileformat:i64,path_and_filename:String,options:i64,scaling_factor:f64,vertices:Vec,indices:Vec)->()), -(sim_floating_view_add,"floatingViewAdd",(pos_x:f64,pos_y:f64,size_x:f64,size_y:f64,options:i64)->i64), -(sim_floating_view_remove,"floatingViewRemove",(floating_view_handle:i64)->i64), -(sim_generate_shape_from_path,"generateShapeFromPath",(path:Vec,section:Vec),opt(options:i64,up_vector:Vec)->i64), -(sim_generate_text_shape,"generateTextShape",(txt:String),opt(color:Vec,height:f64,centered:bool,alphabet_location:String)->i64), -(sim_generate_time_optimal_trajectory,"generateTimeOptimalTrajectory",(path:Vec,path_lengths:Vec,min_max_vel:Vec,min_max_accel:Vec),opt(traj_pt_samples:i64,boundary_condition:String,timeout:f64)->(Vec,Vec)), -(sim_get_alternate_configs,"getAlternateConfigs",(joint_handles:Vec,input_config:Vec),opt(tip_handle:i64,low_limits:Vec,ranges:Vec)->Vec), -(sim_get_api_func,"getApiFunc",(script_handle:i64,api_word:String)->Vec), -(sim_get_api_info,"getApiInfo",(script_handle:i64,api_word:String)->String), -(sim_get_array_param,"getArrayParam",(parameter:i64)->Vec), -(sim_get_auto_yield_delay,"getAutoYieldDelay"->f64), -(sim_get_bool_param,"getBoolParam",(parameter:i64)->bool), -(sim_get_closest_pos_on_path,"getClosestPosOnPath",(path:Vec,path_lengths:Vec,abs_pt:Vec)->f64), -(sim_get_collection_objects,"getCollectionObjects",(collection_handle:i64)->Vec), -(sim_get_config_distance,"getConfigDistance",(config_a:Vec,config_b:Vec),opt(metric:Vec,types:Vec)->f64), -(sim_get_contact_info,"getContactInfo",(dynamic_pass:i64,object_handle:i64,index:i64)->(Vec,Vec,Vec,Vec)), -(sim_get_decimated_mesh,"getDecimatedMesh",(vertices_in:Vec,indices_in:Vec,decimation_percentage:f64)->(Vec,Vec)), -(sim_get_engine_bool_param,"getEngineBoolParam",(param_id:i64,object_handle:i64)->bool), -(sim_get_engine_float_param,"getEngineFloatParam",(param_id:i64,object_handle:i64)->f64), -(sim_get_engine_int32_param,"getEngineInt32Param",(param_id:i64,object_handle:i64)->i64), -(sim_get_euler_angles_from_matrix,"getEulerAnglesFromMatrix",(matrix:Vec)->Vec), -(sim_get_explicit_handling,"getExplicitHandling",(object_handle:i64)->i64), -(sim_get_extension_string,"getExtensionString",(object_handle:i64,index:i64),opt(key:String)->String), -(sim_get_float_param,"getFloatParam",(parameter:i64)->f64), -(sim_get_genesis_events,"getGenesisEvents"->Vec), -(sim_get_graph_curve,"getGraphCurve",(graph_handle:i64,graph_type:i64,curve_index:i64)->(String,i64,Vec,Vec,Vec,Vec,i64,i64)), -(sim_get_graph_info,"getGraphInfo",(graph_handle:i64)->(i64,Vec,Vec,i64)), -(sim_get_int32_param,"getInt32Param",(parameter:i64)->i64), -(sim_get_is_real_time_simulation,"getIsRealTimeSimulation"->i64), -(sim_get_joint_dependency,"getJointDependency",(joint_handle:i64)->(i64,f64,f64)), -(sim_get_joint_force,"getJointForce",(joint_handle:i64)->f64), -(sim_get_joint_interval,"getJointInterval",(object_handle:i64)->(bool,Vec)), -(sim_get_joint_mode,"getJointMode",(joint_handle:i64)->(i64,i64)), -(sim_get_joint_position,"getJointPosition",(object_handle:i64)->f64), -(sim_get_joint_target_force,"getJointTargetForce",(joint_handle:i64)->f64), -(sim_get_joint_target_position,"getJointTargetPosition",(object_handle:i64)->f64), -(sim_get_joint_target_velocity,"getJointTargetVelocity",(object_handle:i64)->f64), -(sim_get_joint_type,"getJointType",(object_handle:i64)->i64), -(sim_get_joint_velocity,"getJointVelocity",(joint_handle:i64)->f64), -(sim_get_last_info,"getLastInfo"->String), -(sim_get_light_parameters,"getLightParameters",(light_handle:i64)->(i64,Vec,Vec,Vec)), -(sim_get_link_dummy,"getLinkDummy",(dummy_handle:i64)->i64), -(sim_get_matching_persistent_data_tags,"getMatchingPersistentDataTags",(pattern:String)->Vec), -(sim_get_matrix_inverse,"getMatrixInverse",(matrix:Vec)->Vec), -(sim_get_model_property,"getModelProperty",(object_handle:i64)->i64), -(sim_get_named_bool_param,"getNamedBoolParam",(name:String)->bool), -(sim_get_named_float_param,"getNamedFloatParam",(name:String)->f64), -(sim_get_named_int32_param,"getNamedInt32Param",(name:String)->i64), -(sim_get_named_string_param,"getNamedStringParam",(param_name:String)->Vec), -(sim_get_navigation_mode,"getNavigationMode"->i64), -(sim_get_object,"getObject",(path:String),opt(options:serde_json::Value)->i64), -(sim_get_object_alias,"getObjectAlias",(object_handle:i64),opt(options:i64)->String), -(sim_get_object_alias_relative,"getObjectAliasRelative",(handle:i64,base_handle:i64),opt(options:i64)->String), -(sim_get_object_child,"getObjectChild",(object_handle:i64,index:i64)->i64), -(sim_get_object_child_pose,"getObjectChildPose",(object_handle:i64)->Vec), -(sim_get_object_color,"getObjectColor",(object_handle:i64,index:i64,color_component:i64)->Vec), -(sim_get_object_float_array_param,"getObjectFloatArrayParam",(object_handle:i64,parameter_id:i64)->Vec), -(sim_get_object_float_param,"getObjectFloatParam",(object_handle:i64,parameter_id:i64)->f64), -(sim_get_object_from_uid,"getObjectFromUid",(uid:i64),opt(options:serde_json::Value)->()), -(sim_get_object_int32_param,"getObjectInt32Param",(object_handle:i64,parameter_id:i64)->i64), -(sim_get_object_matrix,"getObjectMatrix",(object_handle:i64),opt(relative_to_object_handle:i64)->Vec), -(sim_get_object_orientation,"getObjectOrientation",(object_handle:i64),opt(relative_to_object_handle:i64)->Vec), -(sim_get_object_parent,"getObjectParent",(object_handle:i64)->i64), -(sim_get_object_pose,"getObjectPose",(object_handle:i64),opt(relative_to_object_handle:i64)->Vec), -(sim_get_object_position,"getObjectPosition",(object_handle:i64),opt(relative_to_object_handle:i64)->Vec), -(sim_get_object_property,"getObjectProperty",(object_handle:i64)->i64), -(sim_get_object_quaternion,"getObjectQuaternion",(object_handle:i64),opt(relative_to_object_handle:i64)->Vec), -(sim_get_object_sel,"getObjectSel"->Vec), -(sim_get_object_size_factor,"getObjectSizeFactor",(object_handle:i64)->f64), -(sim_get_object_special_property,"getObjectSpecialProperty",(object_handle:i64)->i64), -(sim_get_object_string_param,"getObjectStringParam",(object_handle:i64,parameter_id:i64)->Vec), -(sim_get_object_type,"getObjectType",(object_handle:i64)->i64), -(sim_get_object_uid,"getObjectUid",(object_handle:i64)->i64), -(sim_get_object_velocity,"getObjectVelocity",(object_handle:i64)->(Vec,Vec)), -(sim_get_objects,"getObjects",(index:i64,object_type:i64)->i64), -(sim_get_objects_in_tree,"getObjectsInTree",(tree_base_handle:i64),opt(object_type:i64,options:i64)->Vec), -(sim_get_octree_voxels,"getOctreeVoxels",(octree_handle:i64)->Vec), -(sim_get_page,"getPage"->i64), -(sim_get_path_interpolated_config,"getPathInterpolatedConfig",(path:Vec,path_lengths:Vec,t:f64),opt(method:serde_json::Value,types:Vec)->Vec), -(sim_get_path_lengths,"getPathLengths",(path:Vec,dof:i64),opt(dist_callback:String)->(Vec,f64)), -(sim_get_persistent_data_tags,"getPersistentDataTags"->Vec), -(sim_get_plugin_info,"getPluginInfo",(plugin_name:String,info_type:i64)->String), -(sim_get_plugin_name,"getPluginName",(index:i64)->String), -(sim_get_point_cloud_options,"getPointCloudOptions",(point_cloud_handle:i64)->(f64,i64,i64,f64)), -(sim_get_point_cloud_points,"getPointCloudPoints",(point_cloud_handle:i64)->Vec), -(sim_get_pose_inverse,"getPoseInverse",(pose:Vec)->Vec), -(sim_get_q_hull,"getQHull",(vertices_in:Vec)->(Vec,Vec)), -(sim_get_quaternion_from_matrix,"getQuaternionFromMatrix",(matrix:Vec)->Vec), -(sim_get_random,"getRandom",opt(seed:i64)->f64), -(sim_get_referenced_handles,"getReferencedHandles",(object_handle:i64)->Vec), -(sim_get_rotation_axis,"getRotationAxis",(matrix_start:Vec,matrix_goal:Vec)->(Vec,f64)), -(sim_get_scaled_image,"getScaledImage",(image_in:Vec,resolution_in:Vec,desired_resolution_out:Vec,options:i64)->(Vec,Vec)), -(sim_get_script,"getScript",(script_type:i64),opt(object_handle:i64,script_name:String)->i64), -(sim_get_script_functions,"getScriptFunctions",(script_handle:i64)->serde_json::Value), -(sim_get_script_int32_param,"getScriptInt32Param",(script_handle:i64,parameter_id:i64)->i64), -(sim_get_script_string_param,"getScriptStringParam",(script_handle:i64,parameter_id:i64)->Vec), -(sim_get_setting_bool,"getSettingBool",(key:String)->bool), -(sim_get_setting_float,"getSettingFloat",(key:String)->f64), -(sim_get_setting_int32,"getSettingInt32",(key:String)->i64), -(sim_get_setting_string,"getSettingString",(key:String)->String), -(sim_get_shape_bb,"getShapeBB",(shape_handle:i64)->Vec), -(sim_get_shape_color,"getShapeColor",(shape_handle:i64,color_name:String,color_component:i64)->(i64,Vec)), -(sim_get_shape_geom_info,"getShapeGeomInfo",(shape_handle:i64)->(i64,i64,Vec)), -(sim_get_shape_inertia,"getShapeInertia",(shape_handle:i64)->(Vec,Vec)), -(sim_get_shape_mass_and_inertia,"getShapeMassAndInertia",(shape_handle:i64)->f64), -(sim_get_shape_mesh,"getShapeMesh",(shape_handle:i64)->(Vec,Vec,Vec)), -(sim_get_shape_texture_id,"getShapeTextureId",(shape_handle:i64)->i64), -(sim_get_shape_viz,"getShapeViz",(shape_handle:i64,item_index:i64)->serde_json::Value), -(sim_get_signal_name,"getSignalName",(signal_index:i64,signal_type:i64)->String), -(sim_get_simulation_state,"getSimulationState"->i64), -(sim_get_simulation_stopping,"getSimulationStopping"->bool), -(sim_get_simulation_time,"getSimulationTime"->f64), -(sim_get_simulation_time_step,"getSimulationTimeStep"->f64), -(sim_get_simulator_message,"getSimulatorMessage"->(i64,Vec,Vec)), -(sim_get_stack_traceback,"getStackTraceback",opt(script_handle:i64)->String), -(sim_get_string_param,"getStringParam",(parameter:i64)->String), -(sim_get_system_time,"getSystemTime"->f64), -(sim_get_texture_id,"getTextureId",(texture_name:String)->(i64,Vec)), -(sim_get_thread_id,"getThreadId"->i64), -(sim_get_user_variables,"getUserVariables"->Vec), -(sim_get_velocity,"getVelocity",(shape_handle:i64)->(Vec,Vec)), -(sim_get_vision_sensor_depth,"getVisionSensorDepth",(sensor_handle:i64),opt(options:i64,pos:Vec,size:Vec)->(Vec,Vec)), -(sim_get_vision_sensor_img,"getVisionSensorImg",(sensor_handle:i64),opt(options:i64,rgba_cut_off:f64,pos:Vec,size:Vec)->(Vec,Vec)), -(sim_get_vision_sensor_res,"getVisionSensorRes",(sensor_handle:i64)->()), -(sim_group_shapes,"groupShapes",(shape_handles:Vec),opt(merge:bool)->i64), -(sim_handle_add_on_scripts,"handleAddOnScripts",(call_type:i64)->i64), -(sim_handle_child_scripts,"handleChildScripts",(call_type:i64)->i64), -(sim_handle_dynamics,"handleDynamics",(delta_time:f64)->i64), -(sim_handle_embedded_scripts,"handleEmbeddedScripts",(call_type:i64)->i64), -(sim_handle_graph,"handleGraph",(object_handle:i64,simulation_time:f64)->()), -(sim_handle_joint_motion,"handleJointMotion"->()), -(sim_handle_proximity_sensor,"handleProximitySensor",(sensor_handle:i64)->(i64,f64,Vec,i64,Vec)), -(sim_handle_sandbox_script,"handleSandboxScript",(call_type:i64)->()), -(sim_handle_sensing_start,"handleSensingStart"->()), -(sim_handle_simulation_start,"handleSimulationStart"->()), -(sim_handle_vision_sensor,"handleVisionSensor",(sensor_handle:i64)->(i64,Vec,Vec)), -(sim_import_mesh,"importMesh",(fileformat:i64,path_and_filename:String,options:i64,identical_vertice_tolerance:f64,scaling_factor:f64)->(Vec,Vec)), -(sim_import_shape,"importShape",(fileformat:i64,path_and_filename:String,options:i64,identical_vertice_tolerance:f64,scaling_factor:f64)->i64), -(sim_init_script,"initScript",(script_handle:i64)->bool), -(sim_insert_object_into_octree,"insertObjectIntoOctree",(octree_handle:i64,object_handle:i64,options:i64),opt(color:Vec,tag:i64)->i64), -(sim_insert_object_into_point_cloud,"insertObjectIntoPointCloud",(point_cloud_handle:i64,object_handle:i64,options:i64,grid_size:f64),opt(color:Vec,duplicate_tolerance:f64)->i64), -(sim_insert_points_into_point_cloud,"insertPointsIntoPointCloud",(point_cloud_handle:i64,options:i64,points:Vec),opt(color:Vec,duplicate_tolerance:f64)->i64), -(sim_insert_voxels_into_octree,"insertVoxelsIntoOctree",(octree_handle:i64,options:i64,points:Vec),opt(color:Vec,tag:Vec)->i64), -(sim_interpolate_matrices,"interpolateMatrices",(matrix_in1:Vec,matrix_in2:Vec,interpol_factor:f64)->Vec), -(sim_interpolate_poses,"interpolatePoses",(pose_in1:Vec,pose_in2:Vec,interpol_factor:f64)->Vec), -(sim_intersect_points_with_point_cloud,"intersectPointsWithPointCloud",(point_cloud_handle:i64,options:i64,points:Vec,tolerance:f64)->i64), -(sim_is_deprecated,"isDeprecated",(func_or_const:String)->i64), -(sim_is_dynamically_enabled,"isDynamicallyEnabled",(object_handle:i64)->bool), -(sim_is_handle,"isHandle",(object_handle:i64)->bool), -(sim_launch_executable,"launchExecutable",(filename:String),opt(parameters:String,show_status:i64)->()), -(sim_load_image,"loadImage",(options:i64,filename:String)->(Vec,Vec)), -(sim_load_model,"loadModel",(filename:String)->i64), -(sim_load_scene,"loadScene",(filename:String)->()), -(sim_matrix_to_pose,"matrixToPose",(matrix:Vec)->Vec), -(sim_module_entry,"moduleEntry",(handle:i64),opt(label:String,state:i64)->i64), -(sim_move_to_config,"moveToConfig",(flags:i64,current_pos:Vec,current_vel:Vec,current_accel:Vec,max_vel:Vec,max_accel:Vec,max_jerk:Vec,target_pos:Vec,target_vel:Vec,callback:String),opt(aux_data:serde_json::Value,cyclic_joints:Vec,time_step:f64)->(Vec,Vec,Vec,f64)), -(sim_move_to_pose,"moveToPose",(flags:i64,current_pose:Vec,max_vel:Vec,max_accel:Vec,max_jerk:Vec,target_pose:Vec,callback:String),opt(aux_data:serde_json::Value,metric:Vec,time_step:f64)->(Vec,f64)), -(sim_multiply_matrices,"multiplyMatrices",(matrix_in1:Vec,matrix_in2:Vec)->Vec), -(sim_multiply_poses,"multiplyPoses",(pose_in1:Vec,pose_in2:Vec)->Vec), -(sim_multiply_vector,"multiplyVector",(matrix:Vec,in_vectors:Vec)->Vec), -(sim_pack_double_table,"packDoubleTable",(double_numbers:Vec),opt(start_double_index:i64,double_count:i64)->Vec), -(sim_pack_float_table,"packFloatTable",(float_numbers:Vec),opt(start_float_index:i64,float_count:i64)->Vec), -(sim_pack_int32_table,"packInt32Table",(int32_numbers:Vec),opt(start_int32_index:i64,int32_count:i64)->Vec), -(sim_pack_table,"packTable",(a_table:Vec),opt(scheme:i64)->Vec), -(sim_pack_u_int16_table,"packUInt16Table",(uint16_numbers:Vec),opt(start_uint16_index:i64,uint16_count:i64)->Vec), -(sim_pack_u_int32_table,"packUInt32Table",(uint32_numbers:Vec),opt(start_u_int32_index:i64,uint32_count:i64)->Vec), -(sim_pack_u_int8_table,"packUInt8Table",(uint8_numbers:Vec),opt(start_uint8_index:i64,uint8count:i64)->Vec), -(sim_pause_simulation,"pauseSimulation"->i64), -(sim_persistent_data_read,"persistentDataRead",(data_tag:String)->Vec), -(sim_persistent_data_write,"persistentDataWrite",(data_tag:String,data_value:Vec),opt(options:i64)->()), -(sim_pose_to_matrix,"poseToMatrix",(pose:Vec)->Vec), -(sim_push_user_event,"pushUserEvent",(event:String,handle:i64,uid:i64,event_data:serde_json::Value),opt(options:i64)->()), -(sim_quit_simulator,"quitSimulator"->()), -(sim_read_custom_data_block,"readCustomDataBlock",(object_handle:i64,tag_name:String)->Vec), -(sim_read_custom_data_block_ex,"readCustomDataBlockEx",(handle:i64,tag_name:String),opt(options:serde_json::Value)->()), -(sim_read_custom_data_block_tags,"readCustomDataBlockTags",(object_handle:i64)->Vec), -(sim_read_custom_table_data,"readCustomTableData",(handle:i64,tag_name:String),opt(options:serde_json::Value)->()), -(sim_read_force_sensor,"readForceSensor",(object_handle:i64)->(i64,Vec,Vec)), -(sim_read_proximity_sensor,"readProximitySensor",(sensor_handle:i64)->(i64,f64,Vec,i64,Vec)), -(sim_read_texture,"readTexture",(texture_id:i64,options:i64),opt(pos_x:i64,pos_y:i64,size_x:i64,size_y:i64)->Vec), -(sim_read_vision_sensor,"readVisionSensor",(sensor_handle:i64)->(i64,Vec,Vec)), -(sim_refresh_dialogs,"refreshDialogs",(refresh_degree:i64)->i64), -(sim_release_lock,"releaseLock"->()), -(sim_relocate_shape_frame,"relocateShapeFrame",(shape_handle:i64,pose:Vec)->i64), -(sim_remove_drawing_object,"removeDrawingObject",(drawing_object_handle:i64)->()), -(sim_remove_model,"removeModel",(object_handle:i64)->i64), -(sim_remove_objects,"removeObjects",(object_handles:Vec)->()), -(sim_remove_particle_object,"removeParticleObject",(particle_object_handle:i64)->()), -(sim_remove_points_from_point_cloud,"removePointsFromPointCloud",(point_cloud_handle:i64,options:i64,points:Vec,tolerance:f64)->i64), -(sim_remove_referenced_objects,"removeReferencedObjects",(object_handle:i64)->()), -(sim_remove_script,"removeScript",(script_handle:i64)->()), -(sim_remove_voxels_from_octree,"removeVoxelsFromOctree",(octree_handle:i64,options:i64,points:Vec)->i64), -(sim_resample_path,"resamplePath",(path:Vec,path_lengths:Vec,final_config_cnt:i64),opt(method:serde_json::Value,types:Vec)->Vec), -(sim_reset_dynamic_object,"resetDynamicObject",(object_handle:i64)->()), -(sim_reset_graph,"resetGraph",(object_handle:i64)->()), -(sim_reset_proximity_sensor,"resetProximitySensor",(object_handle:i64)->()), -(sim_reset_vision_sensor,"resetVisionSensor",(sensor_handle:i64)->()), -(sim_restore_entity_color,"restoreEntityColor",(original_color_data:Vec)->()), -(sim_rotate_around_axis,"rotateAroundAxis",(matrix_in:Vec,axis:Vec,axis_pos:Vec,angle:f64)->Vec), -(sim_ruckig_pos,"ruckigPos",(dofs:i64,base_cycle_time:f64,flags:i64,current_pos_vel_accel:Vec,max_vel_accel_jerk:Vec,selection:Vec,target_pos_vel:Vec)->i64), -(sim_ruckig_remove,"ruckigRemove",(handle:i64)->()), -(sim_ruckig_step,"ruckigStep",(handle:i64,cycle_time:f64)->(i64,Vec,f64)), -(sim_ruckig_vel,"ruckigVel",(dofs:i64,base_cycle_time:f64,flags:i64,current_pos_vel_accel:Vec,max_accel_jerk:Vec,selection:Vec,target_vel:Vec)->i64), -(sim_save_image,"saveImage",(image:Vec,resolution:Vec,options:i64,filename:String,quality:i64)->Vec), -(sim_save_model,"saveModel",(model_base_handle:i64,filename:String)->()), -(sim_save_scene,"saveScene",(filename:String)->()), -(sim_scale_object,"scaleObject",(object_handle:i64,x_scale:f64,y_scale:f64,z_scale:f64),opt(options:i64)->()), -(sim_scale_objects,"scaleObjects",(object_handles:Vec,scaling_factor:f64,scale_positions_too:bool)->()), -(sim_serial_check,"serialCheck",(port_handle:i64)->i64), -(sim_serial_close,"serialClose",(port_handle:i64)->()), -(sim_serial_open,"serialOpen",(port_string:String,baudrate:i64)->i64), -(sim_serial_read,"serialRead",(port_handle:i64,data_length_to_read:i64,blocking_operation:bool),opt(closing_string:Vec,timeout:f64)->Vec), -(sim_serial_send,"serialSend",(port_handle:i64,data:Vec)->i64), -(sim_set_array_param,"setArrayParam",(parameter:i64,array_of_values:Vec)->()), -(sim_set_auto_yield_delay,"setAutoYieldDelay",(dt:f64)->()), -(sim_set_bool_param,"setBoolParam",(parameter:i64,bool_state:bool)->()), -(sim_set_engine_bool_param,"setEngineBoolParam",(param_id:i64,object_handle:i64,bool_param:bool)->()), -(sim_set_engine_float_param,"setEngineFloatParam",(param_id:i64,object_handle:i64,float_param:f64)->()), -(sim_set_engine_int32_param,"setEngineInt32Param",(param_id:i64,object_handle:i64,int32_param:i64)->()), -(sim_set_explicit_handling,"setExplicitHandling",(object_handle:i64,explicit_handling_flags:i64)->()), -(sim_set_float_param,"setFloatParam",(parameter:i64,float_state:f64)->()), -(sim_set_float_signal,"setFloatSignal",(signal_name:String,signal_value:f64)->()), -(sim_set_graph_stream_transformation,"setGraphStreamTransformation",(graph_handle:i64,stream_id:i64,tr_type:i64),opt(mult:f64,off:f64,mov_avg_period:i64)->()), -(sim_set_graph_stream_value,"setGraphStreamValue",(graph_handle:i64,stream_id:i64,value:f64)->()), -(sim_set_int32_param,"setInt32Param",(parameter:i64,int_state:i64)->()), -(sim_set_int32_signal,"setInt32Signal",(signal_name:String,signal_value:i64)->()), -(sim_set_joint_dependency,"setJointDependency",(joint_handle:i64,master_joint_handle:i64,offset:f64,mult_coeff:f64)->()), -(sim_set_joint_interval,"setJointInterval",(object_handle:i64,cyclic:bool,interval:Vec)->()), -(sim_set_joint_mode,"setJointMode",(joint_handle:i64,joint_mode:i64,options:i64)->()), -(sim_set_joint_position,"setJointPosition",(object_handle:i64,position:f64)->()), -(sim_set_joint_target_force,"setJointTargetForce",(object_handle:i64,force_or_torque:f64),opt(signed_value:bool)->()), -(sim_set_joint_target_position,"setJointTargetPosition",(object_handle:i64,target_position:f64),opt(motion_params:Vec)->()), -(sim_set_joint_target_velocity,"setJointTargetVelocity",(object_handle:i64,target_velocity:f64),opt(motion_params:Vec)->()), -(sim_set_light_parameters,"setLightParameters",(light_handle:i64,state:i64,reserved:Vec,diffuse_part:Vec,specular_part:Vec)->()), -(sim_set_link_dummy,"setLinkDummy",(dummy_handle:i64,link_dummy_handle:i64)->()), -(sim_set_model_property,"setModelProperty",(object_handle:i64,property:i64)->()), -(sim_set_named_bool_param,"setNamedBoolParam",(name:String,value:bool)->()), -(sim_set_named_float_param,"setNamedFloatParam",(name:String,value:f64)->()), -(sim_set_named_int32_param,"setNamedInt32Param",(name:String,value:i64)->()), -(sim_set_named_string_param,"setNamedStringParam",(param_name:String,string_param:Vec)->()), -(sim_set_navigation_mode,"setNavigationMode",(navigation_mode:i64)->()), -(sim_set_object_alias,"setObjectAlias",(object_handle:i64,object_alias:String)->()), -(sim_set_object_child_pose,"setObjectChildPose",(object_handle:i64,pose:Vec)->()), -(sim_set_object_color,"setObjectColor",(object_handle:i64,index:i64,color_component:i64,rgb_data:Vec)->bool), -(sim_set_object_float_array_param,"setObjectFloatArrayParam",(object_handle:i64,parameter_id:i64,params:Vec)->()), -(sim_set_object_float_param,"setObjectFloatParam",(object_handle:i64,parameter_id:i64,parameter:f64)->()), -(sim_set_object_int32_param,"setObjectInt32Param",(object_handle:i64,parameter_id:i64,parameter:i64)->()), -(sim_set_object_matrix,"setObjectMatrix",(object_handle:i64,matrix:Vec),opt(relative_to_object_handle:i64)->()), -(sim_set_object_orientation,"setObjectOrientation",(object_handle:i64,euler_angles:Vec),opt(relative_to_object_handle:i64)->()), -(sim_set_object_parent,"setObjectParent",(object_handle:i64,parent_object_handle:i64),opt(keep_in_place:bool)->()), -(sim_set_object_pose,"setObjectPose",(object_handle:i64,pose:Vec),opt(relative_to_object_handle:i64)->()), -(sim_set_object_position,"setObjectPosition",(object_handle:i64,position:Vec),opt(relative_to_object_handle:i64)->()), -(sim_set_object_property,"setObjectProperty",(object_handle:i64,property:i64)->()), -(sim_set_object_quaternion,"setObjectQuaternion",(object_handle:i64,quaternion:Vec),opt(relative_to_object_handle:i64)->()), -(sim_set_object_sel,"setObjectSel",(object_handles:Vec)->()), -(sim_set_object_special_property,"setObjectSpecialProperty",(object_handle:i64,property:i64)->()), -(sim_set_object_string_param,"setObjectStringParam",(object_handle:i64,parameter_id:i64,parameter:Vec)->()), -(sim_set_page,"setPage",(page_index:i64)->()), -(sim_set_plugin_info,"setPluginInfo",(plugin_name:String,info_type:i64,info:String)->()), -(sim_set_point_cloud_options,"setPointCloudOptions",(point_cloud_handle:i64,max_voxel_size:f64,max_pt_cnt_per_voxel:i64,options:i64,point_size:f64)->()), -(sim_set_referenced_handles,"setReferencedHandles",(object_handle:i64,referenced_handles:Vec)->()), -(sim_set_script_int32_param,"setScriptInt32Param",(script_handle:i64,parameter_id:i64,parameter:i64)->()), -(sim_set_script_string_param,"setScriptStringParam",(script_handle:i64,parameter_id:i64,parameter:Vec)->()), -(sim_set_shape_bb,"setShapeBB",(shape_handle:i64,size:Vec)->()), -(sim_set_shape_color,"setShapeColor",(shape_handle:i64,color_name:String,color_component:i64,rgb_data:Vec)->()), -(sim_set_shape_inertia,"setShapeInertia",(shape_handle:i64,inertia_matrix:Vec,transformation_matrix:Vec)->()), -(sim_set_shape_mass,"setShapeMass",(shape_handle:i64,mass:f64)->()), -(sim_set_shape_material,"setShapeMaterial",(shape_handle:i64,material_id_or_shape_handle:i64)->()), -(sim_set_shape_texture,"setShapeTexture",(shape_handle:i64,texture_id:i64,mapping_mode:i64,options:i64,uv_scaling:Vec),opt(position:Vec,orientation:Vec)->()), -(sim_set_stepping,"setStepping",(enabled:bool)->i64), -(sim_set_string_param,"setStringParam",(parameter:i64,string_state:String)->()), -(sim_set_string_signal,"setStringSignal",(signal_name:String,signal_value:Vec)->()), -(sim_set_vision_sensor_img,"setVisionSensorImg",(sensor_handle:i64,image:Vec),opt(options:i64,pos:Vec,size:Vec)->()), -(sim_start_simulation,"startSimulation"->i64), -(sim_step,"step"->()), -(sim_stop_simulation,"stopSimulation"->i64), -(sim_subtract_object_from_octree,"subtractObjectFromOctree",(octree_handle:i64,object_handle:i64,options:i64)->i64), -(sim_subtract_object_from_point_cloud,"subtractObjectFromPointCloud",(point_cloud_handle:i64,object_handle:i64,options:i64,tolerance:f64)->i64), -(sim_test_cb,"testCB",(a:i64,cb:String,b:i64)->i64), -(sim_text_editor_close,"textEditorClose",(handle:i64)->(String,Vec,Vec)), -(sim_text_editor_get_info,"textEditorGetInfo",(handle:i64)->(String,Vec,Vec,bool)), -(sim_text_editor_open,"textEditorOpen",(init_text:String,properties:String)->i64), -(sim_text_editor_show,"textEditorShow",(handle:i64,show_state:bool)->()), -(sim_transform_buffer,"transformBuffer",(in_buffer:Vec,in_format:i64,multiplier:f64,offset:f64,out_format:i64)->Vec), -(sim_transform_image,"transformImage",(image:Vec,resolution:Vec,options:i64)->()), -(sim_ungroup_shape,"ungroupShape",(shape_handle:i64)->Vec), -(sim_unpack_double_table,"unpackDoubleTable",(data:Vec),opt(start_double_index:i64,double_count:i64,additional_byte_offset:i64)->Vec), -(sim_unpack_float_table,"unpackFloatTable",(data:Vec),opt(start_float_index:i64,float_count:i64,additional_byte_offset:i64)->Vec), -(sim_unpack_int32_table,"unpackInt32Table",(data:Vec),opt(start_int32_index:i64,int32_count:i64,additional_byte_offset:i64)->Vec), -(sim_unpack_table,"unpackTable",(buffer:Vec)->serde_json::Value), -(sim_unpack_u_int16_table,"unpackUInt16Table",(data:Vec),opt(start_uint16_index:i64,uint16_count:i64,additional_byte_offset:i64)->Vec), -(sim_unpack_u_int32_table,"unpackUInt32Table",(data:Vec),opt(start_uint32_index:i64,uint32_count:i64,additional_byte_offset:i64)->Vec), -(sim_unpack_u_int8_table,"unpackUInt8Table",(data:Vec),opt(start_uint8_index:i64,uint8count:i64)->Vec), -(sim_visit_tree,"visitTree",(root_handle:i64,visitor_func:String),opt(options:serde_json::Value)->()), -(sim_wait,"wait",(dt:f64),opt(simulation_time:bool)->f64), -(sim_wait_for_signal,"waitForSignal",(sig_name:String)->serde_json::Value), -(sim_write_custom_data_block,"writeCustomDataBlock",(object_handle:i64,tag_name:String,data:Vec)->()), -(sim_write_custom_data_block_ex,"writeCustomDataBlockEx",(handle:i64,tag_name:String,data:String),opt(options:serde_json::Value)->()), -(sim_write_custom_table_data,"writeCustomTableData",(handle:i64,tag_name:String,the_table:serde_json::Value),opt(options:serde_json::Value)->()), -(sim_write_texture,"writeTexture",(texture_id:i64,options:i64,texture_data:Vec),opt(pos_x:i64,pos_y:i64,size_x:i64,size_y:i64,interpol:f64)->()), -(sim_yaw_pitch_roll_to_alpha_beta_gamma,"yawPitchRollToAlphaBetaGamma",(yaw_angle:f64,pitch_angle:f64,roll_angle:f64)->(f64,f64,f64)), -(sim_yield,"yield"->()) +(r#"Deprecated. See sim.setJointTargetForce instead."#,sim_set_joint_max_force,"setJointMaxForce",(object_handle:i64,force_or_torque:f64)->()), +(r#"Deprecated. See sim.getJointTargetForce instead."#,sim_get_joint_max_force,"getJointMaxForce",(joint_handle:i64)->f64), +(r#"Deprecated. Use sim.createPrimitiveShape instead"#,sim_create_pure_shape,"createPureShape",(primitive_type:i64,options:i64,sizes:Vec,mass:f64),opt(precision:Vec)->i64), +(r#"Deprecated. See sim.removeObjects instead +"#,sim_remove_object,"removeObject",(object_handle:i64)->()), +(r#"Deprecated. Use sim.getVisionSensorDepth instead"#,sim_get_vision_sensor_depth_buffer,"getVisionSensorDepthBuffer",(sensor_handle:i64),opt(pos:Vec,size:Vec)->(Vec,Vec)), +(r#"Deprecated. Use sim.getVisionSensorImg instead"#,sim_get_vision_sensor_char_image,"getVisionSensorCharImage",(sensor_handle:i64),opt(pos:Vec,size:Vec)->(Vec,Vec)), +(r#"Deprecated. Use sim.setVisionSensorImg instead"#,sim_set_vision_sensor_char_image,"setVisionSensorCharImage",(sensor_handle:i64,image:Vec)->()), +(r#"Deprecated. Use sim.getObjectSel instead"#,sim_get_object_selection,"getObjectSelection"->Vec), +(r#"Deprecated. Use sim.setObjectSel instead"#,sim_set_object_selection,"setObjectSelection",(object_handles:Vec)->()), +(r#"Gets the value of a string signal. See also the other signal functions."#,sim_get_string_signal,"getStringSignal",(signal_name:String)->Option>), +(r#"Gets the value of an integer signal. See also the other signal functions."#,sim_get_int32_signal,"getInt32Signal",(signal_name:String)->Option), +(r#"Gets the value of a double signal. See also the other signal functions."#,sim_get_float_signal,"getFloatSignal",(signal_name:String)->Option), +(r#"Allows to have CoppeliaSim wait for a threaded code section to be executed without interruption. Locking is cumulative. See also sim.releaseLock"#,sim_acquire_lock,"acquireLock"->()), +(r#"Adds a drawing object that will be displayed in the scene. Drawing objects are containers that hold several items of a given type. This can be used for several different applications (simulation of paint, simulation of welding seam, display of 3D objects, etc.). Drawing objects created in a simulation script will be automatically removed at simulation end. See also sim.addDrawingObjectItem, sim.removeDrawingObject and the point cloud functionality."#,sim_add_drawing_object,"addDrawingObject",(object_type:i64,size:f64,duplicate_tolerance:f64,parent_object_handle:i64,max_item_count:i64),opt(color:Vec)->i64), +(r#"Adds an item (or clears all items) to a previously inserted drawing object. See also sim.addDrawingObject and sim.removeDrawingObject"#,sim_add_drawing_object_item,"addDrawingObjectItem",(drawing_object_handle:i64,item_data:Vec)->i64), +(r#"Adds a non-central force to a shape object that is dynamically enabled. Added forces are cumulative, applied relative to the center of mass, and are reset to zero after sim.handleDynamics was called (or by using the following flag: sim.handleflag_resetforcetorque). See also sim.addForceAndTorque."#,sim_add_force,"addForce",(shape_handle:i64,position:Vec,force:Vec)->()), +(r#"Adds a force and/or torque to a shape object that is dynamically enabled. Forces are applied at the center of mass. Added forces and torques are cumulative, and are reset to zero after sim.handleDynamics was called (or by using the following flags: sim.handleflag_resetforce and/or sim.handleflag_resettorque). See also sim.addForce."#,sim_add_force_and_torque,"addForceAndTorque",(shape_handle:i64),opt(force:Vec,torque:Vec)->()), +(r#"Adds or updates a graph curve. A graph curve is persistent, but can be removed with sim.destroyGraphCurve. See also the other functions related to graphs."#,sim_add_graph_curve,"addGraphCurve",(graph_handle:i64,curve_name:String,dim:i64,stream_ids:Vec,default_values:Vec,unit_str:String),opt(options:i64,color:Vec,curve_width:i64)->i64), +(r#"Adds or updates a graph stream. A graph stream is persistent, but can be removed with sim.destroyGraphCurve. See also the other functions related to graphs."#,sim_add_graph_stream,"addGraphStream",(graph_handle:i64,stream_name:String,unit:String),opt(options:i64,color:Vec,cyclic_range:f64)->i64), +(r#" +Adds an item to a collection. See also the other functions related to collections. "#,sim_add_item_to_collection,"addItemToCollection",(collection_handle:i64,what:i64,object_handle:i64,options:i64)->()), +(r#"Adds a log message that will be output in the console or status bar."#,sim_add_log,"addLog",(verbosity_level:i64,log_message:String)->()), +(r#"Adds a particle object that will be simulated and displayed in the scene. Particle objects are containers that hold several items (particles) of a given type. This can be used for several different applications (e.g. simulation of air/water jets) See also sim.addParticleObjectItem and sim.removeParticleObject"#,sim_add_particle_object,"addParticleObject",(object_type:i64,size:f64,density:f64,params:Vec,life_time:f64,max_item_count:i64),opt(color:Vec)->i64), +(r#"Adds an item (or clears all items) to a previously inserted particle object. See also sim.addParticleObject and sim.removeParticleObject"#,sim_add_particle_object_item,"addParticleObjectItem",(object_handle:i64,item_data:Vec)->()), +(r#""#,sim_add_referenced_handle,"addReferencedHandle",(object_handle:i64,referenced_handle:i64)->()), +(r#"Inserts a new script. Use with care when simulation is running. See also sim.associateScriptWithObject."#,sim_add_script,"addScript",(script_type:i64)->i64), +(r#"Adjusts parameters of a view. See also the sim.floatingViewAdd and sim.cameraFitToView functions."#,sim_adjust_view,"adjustView",(view_handle_or_index:i64,associated_viewable_object_handle:i64,options:i64),opt(view_label:String)->i64), +(r#"Reorients the bounding box of a shape, while keeping the shape frame in place. The shape's inertia properties are unaffected. See also sim.relocateShapeFrame"#,sim_align_shape_bb,"alignShapeBB",(shape_handle:i64,pose:Vec)->i64), +(r#"Converts CoppeliaSim's alpha-beta-gamma angles to Yaw-Pitch-Roll angles. See also sim.yawPitchRollToAlphaBetaGamma and the section about positions, orientations and transformations"#,sim_alpha_beta_gamma_to_yaw_pitch_roll,"alphaBetaGammaToYawPitchRoll",(alpha_angle:f64,beta_angle:f64,gamma_angle:f64)->(f64,f64,f64)), +(r#"Announces a change in the scene. This is required for the undo/redo function to operate properly when performing changes via the API. Only call this function directly after a change was made through a dialog element (e.g. a checkbox was checked/unchecked) and that change was reported to the scene (e.g. with sim.writeCustomDataBlock). What this call will do is following: the whole scene will be serialized (saved) to memory as a "scene image" and compared to a previously memorized "scene image". If both images are same, then the last image is discarded, otherwise only the changes between the two images are memorized. A call to this function has no effect (and doesn't generate any error) when called during simulation or when in edit mode."#,sim_announce_scene_content_change,"announceSceneContentChange"->i64), +(r#"Sets the associated object of a child script. Use with care when simulation is running. See also sim.addScript and sim.setScriptText. "#,sim_associate_script_with_object,"associateScriptWithObject",(script_handle:i64,object_handle:i64)->()), +(r#"Closes an auxiliary console window. See also sim.auxiliaryConsoleOpen."#,sim_auxiliary_console_close,"auxiliaryConsoleClose",(console_handle:i64)->i64), +(r#"Opens an auxiliary console window for text display. This console window is different from the application main console window. Console window handles are shared across all simulator scenes. See also sim.auxiliaryConsolePrint, sim.auxiliaryConsoleClose and sim.addLog."#,sim_auxiliary_console_open,"auxiliaryConsoleOpen",(title:String,max_lines:i64,mode:i64),opt(position:Vec,size:Vec,text_color:Vec,background_color:Vec)->i64), +(r#" +Prints to an auxiliary console window. See also sim.auxiliaryConsoleOpen. "#,sim_auxiliary_console_print,"auxiliaryConsolePrint",(console_handle:i64,text:String)->i64), +(r#"Shows or hides an auxiliary console window. See also sim.auxiliaryConsoleOpen and sim.auxiliaryConsoleClose."#,sim_auxiliary_console_show,"auxiliaryConsoleShow",(console_handle:i64,show_state:bool)->i64), +(r#"Broadcasts a message to all scripts, except for the emitting script. Messages are received synchronously via the sysCall_msg callback function"#,sim_broadcast_msg,"broadcastMsg",(message:serde_json::Value),opt(options:i64)->()), +(r#"Builds an identity transformation matrix. See also the other matrix/transformation functions"#,sim_build_identity_matrix,"buildIdentityMatrix"->Vec), +(r#"Builds a transformation matrix based on a position vector and Euler angles. See also the section about positions, orientations and transformations"#,sim_build_matrix,"buildMatrix",(position:Vec,euler_angles:Vec)->Vec), +(r#"Deprecated. See sim.poseToMatrix instead"#,sim_build_matrix_q,"buildMatrixQ",(position:Vec,quaternion:Vec)->Vec), +(r#"Builds a pose based on a position vector and Euler angles or axes. See also the section about positions, orientations and transformations"#,sim_build_pose,"buildPose",(position:Vec,euler_angles_or_axis:Vec),opt(mode:i64,axis2:Vec)->Vec), +(r#"Calls a script function (from a plugin, the main client application, or from another script). This represents a user callback inside of a script. The target script must be initialized for this call to succeed, e.g. when calling simulation scripts, then simulation must be running. See also sim.getScriptFunctions and sim.executeScriptString"#,sim_call_script_function,"callScriptFunction",(function_name:String,script_handle:i64),opt(in_arg:serde_json::Value)->serde_json::Value), +(r#"Shifts and adjusts a camera associated with a view to fill the view entirely with the specified objects or models. See also the sim.adjustView and sim.floatingViewAdd functions."#,sim_camera_fit_to_view,"cameraFitToView",(view_handle_or_index:i64),opt(object_handles:Vec,options:i64,scaling:f64)->i64), +(r#" +Changes the color of an entity, and returns its original color. Currently only takes into account collections and shapes. See also sim.restoreEntityColor. "#,sim_change_entity_color,"changeEntityColor",(entity_handle:i64,new_color:Vec),opt(color_component:i64)->Vec), +(r#"Checks whether two entities are colliding. The collidable flags of the entities are overridden if the entities are objects. If the entities are both the same collection (i.e. with the same collection handle), then same objects will not be checked against themselve"#,sim_check_collision,"checkCollision",(entity1_handle:i64,entity2_handle:i64)->(i64,Vec)), +(r#"Checks whether two entities are colliding, and will return all intersections between the two entities. The collidable flags of the entities are overridden if the entities are objects. See also sim.checkCollision."#,sim_check_collision_ex,"checkCollisionEx",(entity1_handle:i64,entity2_handle:i64)->(i64,Vec)), +(r#"Checks the minimum distance between two entities. The measurable flags of the entities are overridden if the entities are objects. If the entities are both the same collection (i.e. with the same collection handle), then same objects will not be checked against themselve."#,sim_check_distance,"checkDistance",(entity1_handle:i64,entity2_handle:i64),opt(threshold:f64)->(i64,Vec,Vec)), +(r#"Checks whether the provided points collide with the OC tree voxels. See also sim.insertVoxelsIntoOctree and the other OC tree related functions."#,sim_check_octree_point_occupancy,"checkOctreePointOccupancy",(octree_handle:i64,options:i64,points:Vec)->(i64,i64,i64,i64)), +(r#"Checks whether the proximity sensor detects the indicated entity. Detection is silent (no visual feedback) compared to sim.handleProximitySensor. Also, the detectable flags of the entity are overridden if the entity is an object. See also sim.readProximitySensor and sim.checkProximitySensorEx."#,sim_check_proximity_sensor,"checkProximitySensor",(sensor_handle:i64,entity_handle:i64)->(i64,f64,Vec,i64,Vec)), +(r#"Checks whether the proximity sensor detects the indicated entity. This is the extended functionality version of sim.checkProximitySensor. Detection is silent (no visual feedback) compared to sim.handleProximitySensor. Also, the detectable flags of the entity are overridden if the entity is an object. see also sim.readProximitySensor and sim.checkProximitySensorEx2."#,sim_check_proximity_sensor_ex,"checkProximitySensorEx",(sensor_handle:i64,entity_handle:i64,mode:i64,threshold:f64,max_angle:f64)->(i64,f64,Vec,i64,Vec)), +(r#"Checks whether the proximity sensor detects the indicated points, segments or triangles. Detection is silent (no visual feedback). See also sim.readProximitySensor and sim.checkProximitySensorEx."#,sim_check_proximity_sensor_ex2,"checkProximitySensorEx2",(sensor_handle:i64,vertices:Vec,item_type:i64,item_count:i64,mode:i64,threshold:f64,max_angle:f64)->(i64,f64,Vec,Vec)), +(r#"Checks whether the vision sensor detects the indicated entity. Detection is silent (no visual feedback) compared to sim.handleVisionSensor. The vision callback functions will be called on the acquired image. Also, the visibility state of the entity is overridden if the entity is an object. See also sim.readVisionSensor and sim.checkVisionSensorEx."#,sim_check_vision_sensor,"checkVisionSensor",(sensor_handle:i64,entity_handle:i64)->(i64,Vec,Vec)), +(r#"Checks whether the vision sensor detects the indicated entity. This is the extended functionality version of sim.checkVisionSensor. Detection is silent (no visual feedback) compared to sim.handleVisionSensor. The vision callback functions will be called on the acquired image. Also, the visibility state of the entity is overridden if the entity is an object. See also sim.readVisionSensor. "#,sim_check_vision_sensor_ex,"checkVisionSensorEx",(sensor_handle:i64,entity_handle:i64,return_image:bool)->Vec), +(r#"Clears a double signal (removes it). See also the other signal functions."#,sim_clear_float_signal,"clearFloatSignal",(signal_name:String)->()), +(r#"Clears an integer signal (removes it). See also the other signal functions."#,sim_clear_int32_signal,"clearInt32Signal",(signal_name:String)->()), +(r#"Clears a string signal (removes it). See also the other signal functions."#,sim_clear_string_signal,"clearStringSignal",(signal_name:String)->()), +(r#"Closes current scene, and switches to another open scene. If there is no other open scene, a new scene is then created. Can only be called from an add-on, or from the sanbox script, when called from Lua. See also sim.loadScene and sim.saveScene."#,sim_close_scene,"closeScene"->i64), +(r#"Combines two RGB images. See also sim.transformImage."#,sim_combine_rgb_images,"combineRgbImages",(img1:Vec,img1_res:Vec,img2:Vec,img2_res:Vec,operation:i64)->Vec), +(r#"Computes and applies the mass and inertia matrix for a shape, based on its convex representation. When calling this function while the simulation is running, one should then call sim.resetDynamicObject, for the changes to take effect. See also sim.getShapeMassAndInertia and sim.convexDecompose."#,sim_compute_mass_and_inertia,"computeMassAndInertia",(shape_handle:i64,density:f64)->i64), +(r#"Calculates the convex decomposition of a shape using the HACD or V-HACD algorithms. See also sim.getQHull, sim.getDecimatedMesh, sim.ungroupShape and sim.computeMassAndInertia."#,sim_convex_decompose,"convexDecompose",(shape_handle:i64,options:i64,int_params:Vec,float_params:Vec)->i64), +(r#"Copies and pastes objects. See also sim.removeObjects, sim.removeModel, sim.saveModel and sim.loadModel"#,sim_copy_paste_objects,"copyPasteObjects",(object_handles:Vec),opt(options:i64)->Vec), +(r#"Duplicates a table, i.e. makes a deep copy. See also the other packing/unpacking related functions."#,sim_copy_table,"copyTable",(original:Vec)->Vec), +(r#" +Creates a new collection. A collection created in a child script, a customization script or int the main script will be automatically destroyed when the script ends. See also the other functions related to collections."#,sim_create_collection,"createCollection",opt(options:i64)->i64), +(r#"Creates a dummy. "#,sim_create_dummy,"createDummy",(size:f64)->i64), +(r#"Creates a force sensor. "#,sim_create_force_sensor,"createForceSensor",(options:i64,int_params:Vec,float_params:Vec)->i64), +(r#"Creates a heightfield shape. See also sim.createPrimitiveShape, sim.createShape and sim.addParticleObject."#,sim_create_heightfield_shape,"createHeightfieldShape",(options:i64,shading_angle:f64,x_point_count:i64,y_point_count:i64,x_size:f64,heights:Vec)->i64), +(r#"Creates a joint. See also sim.setJointInterval."#,sim_create_joint,"createJoint",(joint_type:i64,joint_mode:i64,options:i64),opt(sizes:Vec)->i64), +(r#"Creates an empty OC tree. See also sim.removeObjects and the other OC tree related functions."#,sim_create_octree,"createOctree",(voxel_size:f64,options:i64,point_size:f64)->i64), +(r#"Creates a path."#,sim_create_path,"createPath",(ctrl_pts:Vec),opt(options:i64,subdiv:i64,smoothness:f64,orientation_mode:i64,up_vector:Vec)->i64), +(r#"Creates an empty point cloud. See also sim.removeObjects, sim.setPointCloudOptions and the other point cloud related functions."#,sim_create_point_cloud,"createPointCloud",(max_voxel_size:f64,max_pt_cnt_per_voxel:i64,options:i64,point_size:f64)->i64), +(r#"Creates a primitive shape. See also sim.createShape and sim.createHeightfieldShape"#,sim_create_primitive_shape,"createPrimitiveShape",(primitive_type:i64,sizes:Vec),opt(options:i64)->i64), +(r#"Creates a proximity sensor. "#,sim_create_proximity_sensor,"createProximitySensor",(sensor_type:i64,sub_type:i64,options:i64,int_params:Vec,float_params:Vec)->i64), +(r#"Creates a mesh shape. See also sim.createPrimitiveShape, sim.createHeightfieldShape and sim.getShapeMesh, and see sim.importMesh for a usage example."#,sim_create_shape,"createShape",(options:i64,shading_angle:f64,vertices:Vec,indices:Vec,normals:Vec,texture_coordinates:Vec,texture:Vec,texture_resolution:Vec)->i64), +(r#"Creates a planar shape, that will be textured with a new, or imported texture. See also sim.getTextureId, sim.readTexture, sim.writeTexture and sim.setShapeTexture."#,sim_create_texture,"createTexture",(file_name:String,options:i64),opt(plane_sizes:Vec,scaling_uv:Vec,xy_g:Vec,fixed_resolution:i64,resolution:Vec)->(i64,i64,Vec)), +(r#"Creates a vision sensor. "#,sim_create_vision_sensor,"createVisionSensor",(options:i64,int_params:Vec,float_params:Vec)->i64), +(r#" +Removes a collection. See also the other functions related to collections."#,sim_destroy_collection,"destroyCollection",(collection_handle:i64)->()), +(r#"Destroys a graph stream or curve. See also the other functions related to graphs."#,sim_destroy_graph_curve,"destroyGraphCurve",(graph_handle:i64,curve_id:i64)->()), +(r#"Duplicates a graph stream or curve, and freezes it. See also the other functions related to graphs."#,sim_duplicate_graph_curve_to_static,"duplicateGraphCurveToStatic",(graph_handle:i64,curve_id:i64),opt(curve_name:String)->i64), +(r#"Executes some code in a specific script (from a plugin, the main client application, or from another script). The target script must be initialized for this call to succeed, e.g. when calling simulation scripts, then simulation must be running. See also sim.callScriptFunction. +Data exchange between a plugin and a script happens via a stack. Reading and writing arguments from/to the stack gives you a maximum of flexibility, and you wil be able to exchange also complex data structures. But it can also be tedious and error prone. Use instead the helper classes located in programming/include/simStack. +"#,sim_execute_script_string,"executeScriptString",(string_to_execute:String,script_handle:i64)->(i64,serde_json::Value)), +(r#"Exports a mesh to a file. See also sim.importMesh and sim.getShapeMesh"#,sim_export_mesh,"exportMesh",(fileformat:i64,path_and_filename:String,options:i64,scaling_factor:f64,vertices:Vec,indices:Vec)->()), +(r#"Adds a floating view to current page. See also the sim.floatingViewRemove, sim.adjustView and sim.cameraFitToView functions."#,sim_floating_view_add,"floatingViewAdd",(pos_x:f64,pos_y:f64,size_x:f64,size_y:f64,options:i64)->i64), +(r#"Removes a floating view previously added with sim.floatingViewAdd. "#,sim_floating_view_remove,"floatingViewRemove",(floating_view_handle:i64)->i64), +(r#"Generates an extrusion shape from a path. See also the other path related functions."#,sim_generate_shape_from_path,"generateShapeFromPath",(path:Vec,section:Vec),opt(options:i64,up_vector:Vec)->i64), +(r#"Generates a 3D text model."#,sim_generate_text_shape,"generateTextShape",(txt:String),opt(color:Vec,height:f64,centered:bool,alphabet_location:String)->i64), +(r#"Generates a time optimal trajectory, based on the TOPPRA library. See also the other path related functions."#,sim_generate_time_optimal_trajectory,"generateTimeOptimalTrajectory",(path:Vec,path_lengths:Vec,min_max_vel:Vec,min_max_accel:Vec),opt(traj_pt_samples:i64,boundary_condition:String,timeout:f64)->(Vec,Vec)), +(r#"Generates alternative manipulator configurations, for a same end-effector pose, for a manipulator that has revolute joints with a range larger than 360 degrees. The original submitted configuration will be part of the returned configurations."#,sim_get_alternate_configs,"getAlternateConfigs",(joint_handles:Vec,input_config:Vec),opt(tip_handle:i64,low_limits:Vec,ranges:Vec)->Vec), +(r#"Retrieves all API functions and variables that match a specific word. Useful for script code auto-completion functionality. See also sim.getApiInfo. +"#,sim_get_api_func,"getApiFunc",(script_handle:i64,api_word:String)->Vec), +(r#"Returns the call tip (or info text) for an API function. See also sim.getApiFunc. +"#,sim_get_api_info,"getApiInfo",(script_handle:i64,api_word:String)->String), +(r#"Retrieves 3 values from an array parameter. See the array parameter identifiers. See also the other simulator parameter related functions."#,sim_get_array_param,"getArrayParam",(parameter:i64)->Vec), +(r#""#,sim_get_auto_yield_delay,"getAutoYieldDelay"->f64), +(r#"Retrieves a bool parameter. See the bool parameter identifiers. See also the other simulator parameter related functions."#,sim_get_bool_param,"getBoolParam",(parameter:i64)->bool), +(r#"Returns the position or distance along a path that is closest to a specified point in space. See also the other path related functions."#,sim_get_closest_pos_on_path,"getClosestPosOnPath",(path:Vec,path_lengths:Vec,abs_pt:Vec)->f64), +(r#"Retrieves the object handles that compose a collection. See also the other functions related to collections."#,sim_get_collection_objects,"getCollectionObjects",(collection_handle:i64)->Vec), +(r#"Returns the distance between two configurations points. See also the other path related functions."#,sim_get_config_distance,"getConfigDistance",(config_a:Vec,config_b:Vec),opt(metric:Vec,types:Vec)->f64), +(r#"Retrieves contact point information of a dynamic simulation pass. "#,sim_get_contact_info,"getContactInfo",(dynamic_pass:i64,object_handle:i64,index:i64)->(Vec,Vec,Vec,Vec)), +(r#"Retrieves a decimated mesh (i.e. a simplified mesh). See also sim.convexDecompose and sim.getQHull."#,sim_get_decimated_mesh,"getDecimatedMesh",(vertices_in:Vec,indices_in:Vec,decimation_percentage:f64)->(Vec,Vec)), +(r#" +Retrieves a bool value from the physics engine properties. See also the other engine properties setter and getter API functions."#,sim_get_engine_bool_param,"getEngineBoolParam",(param_id:i64,object_handle:i64)->bool), +(r#" +Retrieves a double value from the physics engine properties. See also the other engine properties setter and getter API functions."#,sim_get_engine_float_param,"getEngineFloatParam",(param_id:i64,object_handle:i64)->f64), +(r#" +Retrieves an int32 value from the physics engine properties. See also the other engine properties setter and getter API functions."#,sim_get_engine_int32_param,"getEngineInt32Param",(param_id:i64,object_handle:i64)->i64), +(r#"Retrieves the Euler angles from a transformation matrix. See also the section about positions, orientations and transformations"#,sim_get_euler_angles_from_matrix,"getEulerAnglesFromMatrix",(matrix:Vec)->Vec), +(r#"Retrieves the explicit handling flags for a scene object. See also sim.setExplicitHandling."#,sim_get_explicit_handling,"getExplicitHandling",(object_handle:i64)->i64), +(r#"Retrieves a string that describes additional environment or object properties, mainly used by extension plugins."#,sim_get_extension_string,"getExtensionString",(object_handle:i64,index:i64),opt(key:String)->String), +(r#"Retrieves a floating point parameter. See the floating-point parameter identifiers. See also the other simulator parameter related functions."#,sim_get_float_param,"getFloatParam",(parameter:i64)->f64), +(r#"Retrieves all events that allow to reconstruct a scene's (mostly) visual content remotely"#,sim_get_genesis_events,"getGenesisEvents"->Vec), +(r#""#,sim_get_graph_curve,"getGraphCurve",(graph_handle:i64,graph_type:i64,curve_index:i64)->(String,i64,Vec,Vec,Vec,Vec,i64,i64)), +(r#""#,sim_get_graph_info,"getGraphInfo",(graph_handle:i64)->(i64,Vec,Vec,i64)), +(r#"Retrieves an integer parameter. See the integer parameter identifiers. See also the other simulator parameter related functions."#,sim_get_int32_param,"getInt32Param",(parameter:i64)->i64), +(r#""#,sim_get_is_real_time_simulation,"getIsRealTimeSimulation"->i64), +(r#"Retrieves joint dependency information, when the joint is in dependent mode. See also sim.setJointDependency and sim.getJointMode."#,sim_get_joint_dependency,"getJointDependency",(joint_handle:i64)->(i64,f64,f64)), +(r#"Retrieves the force or torque applied to a joint along/about its active axis. This function retrieves meaningful information only if the joint is prismatic or revolute, and is dynamically enabled. With the Bullet, MuJoCo and Newton engine, this function returns the force or torque applied to the joint motor (torques from joint limits are not taken into account). With the ODE and Vortex engine, this function returns the total force or torque applied to a joint along/about its z-axis. See also sim.setJointTargetForce and sim.readForceSensor."#,sim_get_joint_force,"getJointForce",(joint_handle:i64)->f64), +(r#"Retrieves the interval parameters of a joint. See also sim.setJointInterval."#,sim_get_joint_interval,"getJointInterval",(object_handle:i64)->(bool,Vec)), +(r#"Retrieves the operation mode of a joint. See also sim.setJointMode and sim.getObjectInt32Param with sim.jointintparam_dynctrlmode"#,sim_get_joint_mode,"getJointMode",(joint_handle:i64)->(i64,i64)), +(r#"Retrieves the linear/angular position of a joint. This function cannot be used with spherical joints (use sim.getObjectChildPose instead). See also sim.setJointPosition"#,sim_get_joint_position,"getJointPosition",(object_handle:i64)->f64), +(r#"Retrieves the force or torque that a joint can exert. See also sim.setJointTargetForce and sim.getJointTargetVelocity."#,sim_get_joint_target_force,"getJointTargetForce",(joint_handle:i64)->f64), +(r#"Retrieves the target linear/angular position of a joint. See also sim.setJointTargetPosition"#,sim_get_joint_target_position,"getJointTargetPosition",(object_handle:i64)->f64), +(r#"Retrieves the target linear/angular velocity of a non-spherical joint. See also sim.setJointTargetVelocity"#,sim_get_joint_target_velocity,"getJointTargetVelocity",(object_handle:i64)->f64), +(r#" +Retrieves the type of a joint +"#,sim_get_joint_type,"getJointType",(object_handle:i64)->i64), +(r#"Retrieves the linear or angular velocity of a joint. The velocity is a measured velocity (i.e. from one simulation step to the next), and is available for all joints in the scene."#,sim_get_joint_velocity,"getJointVelocity",(joint_handle:i64)->f64), +(r#"Retrieves and clears the information string generated by last API call"#,sim_get_last_info,"getLastInfo"->String), +(r#" +Retrieves various parameters of a light object. See also sim.setLightParameters. "#,sim_get_light_parameters,"getLightParameters",(light_handle:i64)->(i64,Vec,Vec,Vec)), +(r#"Retrieves the object handle of the dummy linked to this one. See also sim.setLinkDummy."#,sim_get_link_dummy,"getLinkDummy",(dummy_handle:i64)->i64), +(r#"Retrieves persistent data block tags that match a specific pattern. See also sim.getPersistentDataTags"#,sim_get_matching_persistent_data_tags,"getMatchingPersistentDataTags",(pattern:String)->Vec), +(r#"Inverts a transformation matrix. See also the section about positions, orientations and transformations"#,sim_get_matrix_inverse,"getMatrixInverse",(matrix:Vec)->Vec), +(r#"Retrieves the properties of a model. See also sim.setModelProperty, sim.getObjectProperty and sim.getObjectSpecialProperty."#,sim_get_model_property,"getModelProperty",(object_handle:i64)->i64), +(r#"Retrieves a named bool parameter. Accepted values are true, false, on, off, 1 or 0. See also the other simulator named parameter related functions."#,sim_get_named_bool_param,"getNamedBoolParam",(name:String)->bool), +(r#"Retrieves a named double parameter. See also the other simulator named parameter related functions."#,sim_get_named_float_param,"getNamedFloatParam",(name:String)->f64), +(r#"Retrieves a named int parameter. See also the other simulator named parameter related functions."#,sim_get_named_int32_param,"getNamedInt32Param",(name:String)->i64), +(r#"Retrieves a named string or buffer parameter. See also the other simulator named parameter related functions."#,sim_get_named_string_param,"getNamedStringParam",(param_name:String)->Vec), +(r#"Retrieves the navigation and selection mode for the mouse. See also sim.setNavigationMode."#,sim_get_navigation_mode,"getNavigationMode"->i64), +(r#"Retrieves an object handle based on its path and alias. See also sim.isHandle, and sim.getObjectUid."#,sim_get_object,"getObject",(path:String),opt(options:serde_json::Value)->i64), +(r#"Retrieves the alias or path of an object based on its handle. See also sim.setObjectAlias."#,sim_get_object_alias,"getObjectAlias",(object_handle:i64),opt(options:i64)->String), +(r#""#,sim_get_object_alias_relative,"getObjectAliasRelative",(handle:i64,base_handle:i64),opt(options:i64)->String), +(r#"Retrieves the handle of an object's child object. See also sim.getObjectParent and sim.getObjectsInTree."#,sim_get_object_child,"getObjectChild",(object_handle:i64,index:i64)->i64), +(r#"Retrieves the intrinsic or internal transformation of an object. For a joint, this is the transformation caused by the joint movement, mainly. For joints and force sensors, this will also include a possible error transformation caused by the physics engine (a physics engine can cause joints and force sensors to come apart, when constraints can't be perfectly resolved). See also sim.setObjectChildPose and the section about positions, orientations and transformations"#,sim_get_object_child_pose,"getObjectChildPose",(object_handle:i64)->Vec), +(r#" +Retrieves the color of a scene object. See also other rendering related functions. "#,sim_get_object_color,"getObjectColor",(object_handle:i64,index:i64,color_component:i64)->Vec), +(r#"Retrieves a floating-point array parameter of a scene object. See also the other object parameter related functions"#,sim_get_object_float_array_param,"getObjectFloatArrayParam",(object_handle:i64,parameter_id:i64)->Vec), +(r#"Retrieves a floating-point parameter of a scene object. See also the other object parameter related functions"#,sim_get_object_float_param,"getObjectFloatParam",(object_handle:i64,parameter_id:i64)->f64), +(r#"Retrieves an object handle based on its unique identifier. See also sim.getObjectUid."#,sim_get_object_from_uid,"getObjectFromUid",(uid:i64),opt(options:serde_json::Value)->()), +(r#"Retrieves an int32 parameter of a scene object. See also the other object parameter related functions"#,sim_get_object_int32_param,"getObjectInt32Param",(object_handle:i64,parameter_id:i64)->i64), +(r#"Retrieves the transformation matrix of an object. See also sim.setObjectMatrix and the section about positions, orientations and transformations"#,sim_get_object_matrix,"getObjectMatrix",(object_handle:i64),opt(relative_to_object_handle:i64)->Vec), +(r#"Retrieves the orientation (Euler angles) of an object. See also sim.setObjectOrientation and the section about positions, orientations and transformations"#,sim_get_object_orientation,"getObjectOrientation",(object_handle:i64),opt(relative_to_object_handle:i64)->Vec), +(r#"Retrieves the handle of an object's parent object. See also sim.setObjectParent and sim.getObjectChild."#,sim_get_object_parent,"getObjectParent",(object_handle:i64)->i64), +(r#"Retrieves the pose of an object. See also sim.setObjectPose and the section about positions, orientations and transformations"#,sim_get_object_pose,"getObjectPose",(object_handle:i64),opt(relative_to_object_handle:i64)->Vec), +(r#"Retrieves the position of an object. See also sim.setObjectPosition and the section about positions, orientations and transformations"#,sim_get_object_position,"getObjectPosition",(object_handle:i64),opt(relative_to_object_handle:i64)->Vec), +(r#"Retrieves the main properties of a scene object. See also sim.setObjectProperty, sim.getObjectSpecialProperty and sim.getModelProperty."#,sim_get_object_property,"getObjectProperty",(object_handle:i64)->i64), +(r#"Retrieves the quaternion of an object. See also sim.setObjectQuaternion and the section about positions, orientations and transformations"#,sim_get_object_quaternion,"getObjectQuaternion",(object_handle:i64),opt(relative_to_object_handle:i64)->Vec), +(r#"Retrieves the handles of selected objects. See also sim.setObjectSel"#,sim_get_object_sel,"getObjectSel"->Vec), +(r#"Retrieves the size factor of a scene object. The size factor is different from the real object size. Use this to be able to adapt to scaling operations. See also the other size and scaling functions."#,sim_get_object_size_factor,"getObjectSizeFactor",(object_handle:i64)->f64), +(r#"Retrieves the special properties of a scene object. See also sim.setObjectSpecialProperty, sim.getObjectProperty and sim.getModelProperty."#,sim_get_object_special_property,"getObjectSpecialProperty",(object_handle:i64)->i64), +(r#"Retrieves a string parameter of a scene object. See also the other object parameter related functions"#,sim_get_object_string_param,"getObjectStringParam",(object_handle:i64,parameter_id:i64)->Vec), +(r#" +Retrieves the type of an object +"#,sim_get_object_type,"getObjectType",(object_handle:i64)->i64), +(r#"Retrieves the unique identifier of an object: throughout a CoppeliaSim session, there won't be two identical unique identifiers. Unique identifiers are however not persistent (i.e. are not saved with the object). See also sim.getObjectfromUid."#,sim_get_object_uid,"getObjectUid",(object_handle:i64)->i64), +(r#"Retrieves the linear and/or angular velocity of an object, in absolute coordinates. The velocity is a measured velocity (i.e. from one simulation step to the next), and is available for all objects in the scene. See also sim.getVelocity."#,sim_get_object_velocity,"getObjectVelocity",(object_handle:i64)->(Vec,Vec)), +(r#"Retrieves object handles. Use this in a loop where index starts at 0 and is incremented to get all object handles in the scene. See also sim.getObjectsInTree."#,sim_get_objects,"getObjects",(index:i64,object_type:i64)->i64), +(r#"Retrieves object handles in a given hierarchy tree. See also sim.getObjects."#,sim_get_objects_in_tree,"getObjectsInTree",(tree_base_handle:i64),opt(object_type:i64,options:i64)->Vec), +(r#"Retrieves voxel positions from an OC tree. See also the other OC tree related functions."#,sim_get_octree_voxels,"getOctreeVoxels",(octree_handle:i64)->Vec), +(r#"Retrieves the current page index (view). See also sim.setPage."#,sim_get_page,"getPage"->i64), +(r#"Returns an interpolated configuration from a path. See also the other path related functions."#,sim_get_path_interpolated_config,"getPathInterpolatedConfig",(path:Vec,path_lengths:Vec,t:f64),opt(method:serde_json::Value,types:Vec)->Vec), +(r#"Returns the lengths of a path in 1, 2 or 3D Cartesian space, even if more coordinates are provided. Each path point will have a corresponding length value (taken as the distance from the path's first point, along the path). See also the other path related functions."#,sim_get_path_lengths,"getPathLengths",(path:Vec,dof:i64),opt(dist_callback:String)->(Vec,f64)), +(r#"Retrieves all persistent data block tags or names. See also sim.getMatchingPersistentDataTags and sim.persistentDataRead"#,sim_get_persistent_data_tags,"getPersistentDataTags"->Vec), +(r#"Returns auxiliary information about a loaded plugin. See also sim.setPluginInfo and sim.getPluginName. +"#,sim_get_plugin_info,"getPluginInfo",(plugin_name:String,info_type:i64)->String), +(r#"Retrieves a plugin name based on an index"#,sim_get_plugin_name,"getPluginName",(index:i64)->String), +(r#"Gets various properties of a point cloud. See also sim.setPointCloudOptions and the other point cloud related functions."#,sim_get_point_cloud_options,"getPointCloudOptions",(point_cloud_handle:i64)->(f64,i64,i64,f64)), +(r#"Retrieves point positions from a point cloud. See also the other point cloud related functions."#,sim_get_point_cloud_points,"getPointCloudPoints",(point_cloud_handle:i64)->Vec), +(r#"Inverts a pose. See also the section about positions, orientations and transformations"#,sim_get_pose_inverse,"getPoseInverse",(pose:Vec)->Vec), +(r#"Retrieves the convex hull mesh from the specified vertices. See also sim.convexDecompose and sim.getDecimatedMesh."#,sim_get_q_hull,"getQHull",(vertices_in:Vec)->(Vec,Vec)), +(r#"Deprecated. See sim.matrixToPose instead"#,sim_get_quaternion_from_matrix,"getQuaternionFromMatrix",(matrix:Vec)->Vec), +(r#"Generates a random value in the range between 0 and 1. The value is generated from an individual generator attached to the calling script (i.e. scripts do not share a common generator as is the case with Lua's math.random function). sim.getRandom has however also been wrapped inside of two new Lua functions, in order to mimic Lua's math.random and math.randomseed: + +--lua + +function math.random2(lower, upper) + local r = sim.getRandom() + if lower then + local b = 1 + local d + if upper then + b = lower + d = upper - b + else + d = lower - b + end + local e = d / (d + 1) + r = b + math.floor(r * d / e) + end + return r +end + +function math.randomseed2(seed) + sim.getRandom(seed) +end +"#,sim_get_random,"getRandom",opt(seed:i64)->f64), +(r#" +Retrieves a list of custom handles, linking a given scene object to other scene objects. See also sim.setReferencedHandles. "#,sim_get_referenced_handles,"getReferencedHandles",(object_handle:i64)->Vec), +(r#"Retrieves an axis and rotation angle that brings one pose or transformation matrix onto another one. The translation part of the poses/matrices is ignored. This function, when used in combination with sim.rotateAroundAxis, can be used to build interpolations between transformation matrices. See also the section about positions, orientations and transformations"#,sim_get_rotation_axis,"getRotationAxis",(matrix_start:Vec,matrix_goal:Vec)->(Vec,f64)), +(r#"Generates a scaled-up or scaled down version of the input image. See also sim.transformImage, sim.loadImage, sim.saveImage and sim.setVisionSensorImg."#,sim_get_scaled_image,"getScaledImage",(image_in:Vec,resolution_in:Vec,desired_resolution_out:Vec,options:i64)->(Vec,Vec)), +(r#"Retrieves the handle of a script."#,sim_get_script,"getScript",(script_type:i64),opt(object_handle:i64,script_name:String)->i64), +(r#"Retrieves a map of another script functions, that can be called. See also sim.callScriptFunction"#,sim_get_script_functions,"getScriptFunctions",(script_handle:i64)->serde_json::Value), +(r#"Retrieves an int32 parameter of a script. See also the other functions related to script parameters."#,sim_get_script_int32_param,"getScriptInt32Param",(script_handle:i64,parameter_id:i64)->i64), +(r#"Retrieves a string parameter of a script. See also the other functions related to script parameters."#,sim_get_script_string_param,"getScriptStringParam",(script_handle:i64,parameter_id:i64)->Vec), +(r#""#,sim_get_setting_bool,"getSettingBool",(key:String)->bool), +(r#""#,sim_get_setting_float,"getSettingFloat",(key:String)->f64), +(r#""#,sim_get_setting_int32,"getSettingInt32",(key:String)->i64), +(r#""#,sim_get_setting_string,"getSettingString",(key:String)->String), +(r#" +Returns the size of a shape's bounding box. See also the other size and scaling functions."#,sim_get_shape_bb,"getShapeBB",(shape_handle:i64)->Vec), +(r#" +Retrieves the color of a shape. See also other rendering related functions. "#,sim_get_shape_color,"getShapeColor",(shape_handle:i64,color_name:String,color_component:i64)->(i64,Vec)), +(r#"Retrieves geometric information related to a shape. See also sim.getShapeMesh."#,sim_get_shape_geom_info,"getShapeGeomInfo",(shape_handle:i64)->(i64,i64,Vec)), +(r#"Retrieves the inertia information from a shape. See also sim.setShapeInertia, sim.getShapeMass and sim.computeMassAndInertia."#,sim_get_shape_inertia,"getShapeInertia",(shape_handle:i64)->(Vec,Vec)), +(r#"Deprecated. Use sim.getShapeMass and sim.getShapeInertia instead."#,sim_get_shape_mass_and_inertia,"getShapeMassAndInertia",(shape_handle:i64)->f64), +(r#"Retrieves a shape's mesh information. See also sim.getShapeViz, sim.createShape and sim.exportMesh for a usage example."#,sim_get_shape_mesh,"getShapeMesh",(shape_handle:i64)->(Vec,Vec,Vec)), +(r#"Retrieves the texture ID of a texture that is applied to a specific shape. See also sim.getTextureId and sim.setShapeTexture."#,sim_get_shape_texture_id,"getShapeTextureId",(shape_handle:i64)->i64), +(r#"Retrieves a shape's visual information."#,sim_get_shape_viz,"getShapeViz",(shape_handle:i64,item_index:i64)->serde_json::Value), +(r#"Returns the signal name at the given index. Use this function in a loop until return is nullptr to read all set signals. See also the other signal functions."#,sim_get_signal_name,"getSignalName",(signal_index:i64,signal_type:i64)->String), +(r#"Retrieves current simulation state. See also the simulation state diagram."#,sim_get_simulation_state,"getSimulationState"->i64), +(r#"Convenience function that returns true when the simulation is about to stop or stopped."#,sim_get_simulation_stopping,"getSimulationStopping"->bool), +(r#"Retrieves the current simulation time"#,sim_get_simulation_time,"getSimulationTime"->f64), +(r#"Retrieves the simulation time step (the simulation time (i.e. not real-time) that passes at each main script simulation pass). This value might not be constant for a given simulation."#,sim_get_simulation_time_step,"getSimulationTimeStep"->f64), +(r#"Retrieves and removes the next message in the C/C++ or Lua message queues. Use this in a while-loop until all messages have been extracted. While the C/C++ interface has one single message queue, each Lua script has its own message queue. The C/C++ version of this function should only be called from the CoppeliaSim client application. A given message queue cannot hold more than 64 messages, unread messages will be discarded."#,sim_get_simulator_message,"getSimulatorMessage"->(i64,Vec,Vec)), +(r#"Lua only. Retrieves and clears the last generated stack traceback for a script. See also simGetLastError and sim.getScript."#,sim_get_stack_traceback,"getStackTraceback",opt(script_handle:i64)->String), +(r#"Retrieves a string parameter. See the string parameter identifiers. See also the other simulator parameter related functions."#,sim_get_string_param,"getStringParam",(parameter:i64)->String), +(r#"Retrieves the system time."#,sim_get_system_time,"getSystemTime"->f64), +(r#"Retrieves the texture ID of a specific texture. See also sim.readTexture, sim.writeTexture and sim.createTexture."#,sim_get_texture_id,"getTextureId",(texture_name:String)->(i64,Vec)), +(r#""#,sim_get_thread_id,"getThreadId"->i64), +(r#"Lua only. Returns all variables, except those set by CoppeliaSim."#,sim_get_user_variables,"getUserVariables"->Vec), +(r#"Retrieves the linear and/or angular velocity of the center of mass of a non-static shape. Data is provided by the selected physics engine. See also sim.getObjectVelocity."#,sim_get_velocity,"getVelocity",(shape_handle:i64)->(Vec,Vec)), +(r#"Reads the depth buffer of a vision sensor. The returned data doesn't make sense if sim.handleVisionSensor wasn't called previously (sim.handleVisionSensor is called by default in the main script if the vision sensor is not tagged as explicit handling). See also other vision sensor related API functions"#,sim_get_vision_sensor_depth,"getVisionSensorDepth",(sensor_handle:i64),opt(options:i64,pos:Vec,size:Vec)->(Vec,Vec)), +(r#"Reads the image of a vision sensor. The returned data doesn't make sense if sim.handleVisionSensor wasn't called previously (sim.handleVisionSensor is called by default in the main script if the vision sensor is not tagged as explicit handling). See also sim.saveImage and other vision sensor related API functions"#,sim_get_vision_sensor_img,"getVisionSensorImg",(sensor_handle:i64),opt(options:i64,rgba_cut_off:f64,pos:Vec,size:Vec)->(Vec,Vec)), +(r#"Returns the resolution of the vision sensor"#,sim_get_vision_sensor_res,"getVisionSensorRes",(sensor_handle:i64)->()), +(r#"Groups (or merges) several shapes into a compound shape (or simple shape). See also sim.ungroupShape, sim.alignShapeBB and sim.relocateShapeFrame"#,sim_group_shapes,"groupShapes",(shape_handles:Vec),opt(merge:bool)->i64), +(r#"Lua only. Calls a specific function in add-ons. sim.handleAddOnScripts should only be called from the main script."#,sim_handle_add_on_scripts,"handleAddOnScripts",(call_type:i64)->i64), +(r#"Lua only. Calls a specific system callback function in child scripts. Child scripts will be executed in a precise order. This function should only be called from the main script."#,sim_handle_child_scripts,"handleChildScripts",(call_type:i64)->i64), +(r#"Handles the dynamics functionality in a scene. This function is not available to add-ons."#,sim_handle_dynamics,"handleDynamics",(delta_time:f64)->i64), +(r#"Lua only. Calls a specific system callback function in child scripts and customization scripts. Child- and customiization scripts will be executed in a precise order. This function should only be called from the main script."#,sim_handle_embedded_scripts,"handleEmbeddedScripts",(call_type:i64)->i64), +(r#"Handles a graph object (i.e. records another value for each curve, given that such value was provided via sim.setGraphStreamValue. See also the other functions related to graphs."#,sim_handle_graph,"handleGraph",(object_handle:i64,simulation_time:f64)->()), +(r#""#,sim_handle_joint_motion,"handleJointMotion"->()), +(r#"Handles (performs sensing, etc. of) a registered proximity sensor object. See also sim.readProximitySensor, sim.checkProximitySensor, sim.checkProximitySensorEx and sim.resetProximitySensor."#,sim_handle_proximity_sensor,"handleProximitySensor",(sensor_handle:i64)->(i64,f64,Vec,i64,Vec)), +(r#"Lua only. Calls a specific function in the sandbox script. sim.handleSandboxScript should only be called from the main script."#,sim_handle_sandbox_script,"handleSandboxScript",(call_type:i64)->()), +(r#"Handles various functionality (e.g. camera tracking during simulation, object velocity calculation, etc.). Should only be called from the main script, as the first instruction in the sensing section. See also sim.handleSimulationStart."#,sim_handle_sensing_start,"handleSensingStart"->()), +(r#"Initializes various functionality (e.g. camera tracking during simulation, object velocity calculation, etc.). Should only be called from the main script, as the first instruction in the initialization section. See also sim.handleSensingStart."#,sim_handle_simulation_start,"handleSimulationStart"->()), +(r#"Handles (performs sensing, etc. of) a vision sensor object. It will (1) clear previous computed image processing data, (2) read an image and (3) perform image processing via the vision callback functions (if the vision sensor is using an external input only (1) will be performed). See also sim.readVisionSensor, sim.checkVisionSensor, sim.checkVisionSensorEx and sim.resetVisionSensor."#,sim_handle_vision_sensor,"handleVisionSensor",(sensor_handle:i64)->(i64,Vec,Vec)), +(r#"Imports a mesh from a file. See also sim.exportMesh, sim.importShape and sim.createShape"#,sim_import_mesh,"importMesh",(fileformat:i64,path_and_filename:String,options:i64,identical_vertice_tolerance:f64,scaling_factor:f64)->(Vec,Vec)), +(r#"Imports a shape from a file (first imports meshes, then groups/merges them into a shape). See also sim.importMesh."#,sim_import_shape,"importShape",(fileformat:i64,path_and_filename:String,options:i64,identical_vertice_tolerance:f64,scaling_factor:f64)->i64), +(r#"Initializes/reinitializes a script. Cannot be called from within the script being reinitialized."#,sim_init_script,"initScript",(script_handle:i64)->bool), +(r#"Inserts an object into an OC tree, as voxels. Each voxel will store a color and a tag value. See also sim.subtractObjectFromOctree, sim.insertVoxelsIntoOctree and the other OC tree related functions."#,sim_insert_object_into_octree,"insertObjectIntoOctree",(octree_handle:i64,object_handle:i64,options:i64),opt(color:Vec,tag:i64)->i64), +(r#"Inserts an object into a point cloud, as points. See also sim.insertPointsIntoPointCloud and the other point cloud related functions."#,sim_insert_object_into_point_cloud,"insertObjectIntoPointCloud",(point_cloud_handle:i64,object_handle:i64,options:i64,grid_size:f64),opt(color:Vec,duplicate_tolerance:f64)->i64), +(r#"Inserts points into a point cloud. See also sim.removePointsFromPointCloud and the other point cloud related functions."#,sim_insert_points_into_point_cloud,"insertPointsIntoPointCloud",(point_cloud_handle:i64,options:i64,points:Vec),opt(color:Vec,duplicate_tolerance:f64)->i64), +(r#"Inserts voxels into an OC tree. Each voxel will store a color and a tag value. See also sim.removeVoxelsFromOctree and the other OC tree related functions."#,sim_insert_voxels_into_octree,"insertVoxelsIntoOctree",(octree_handle:i64,options:i64,points:Vec),opt(color:Vec,tag:Vec)->i64), +(r#"Computes the interpolated transformation matrix between matrixIn1 and matrixIn2. Quaternions are used internally. See also the section about positions, orientations and transformations"#,sim_interpolate_matrices,"interpolateMatrices",(matrix_in1:Vec,matrix_in2:Vec,interpol_factor:f64)->Vec), +(r#"Computes the interpolated pose between poseIn1 and poseIn2. See also the section about positions, orientations and transformations"#,sim_interpolate_poses,"interpolatePoses",(pose_in1:Vec,pose_in2:Vec,interpol_factor:f64)->Vec), +(r#"Removes points from a point cloud, that do not intersect with the provided points (i.e. the result in the point cloud will be the intersection between the two sets of points). When a point cloud doesn't use an OC tree calculation structure, then this operation cannot be performed. See also sim.insertPointsIntoPointCloud, sim.setPointCloudOptions and the other point cloud related functions."#,sim_intersect_points_with_point_cloud,"intersectPointsWithPointCloud",(point_cloud_handle:i64,options:i64,points:Vec,tolerance:f64)->i64), +(r#"Deprecated (yes, what an irony!). Returns 0"#,sim_is_deprecated,"isDeprecated",(func_or_const:String)->i64), +(r#"Checks whether a scene object is dynamically enabled, i.e. is being handled and simulated by the physics engine. Note that until the physics engine has parsed the scene in the first simulation step (i.e. the first time sim.handleDynamics is called), no object will be dynamically enabled."#,sim_is_dynamically_enabled,"isDynamicallyEnabled",(object_handle:i64)->bool), +(r#"Checks whether a general object handle is still valid. When a general object is destroyed (e.g. programmatically or via the user interface), then its related handle is not valid anymore and will trigger an error when used. Use this function to avoid triggering an error. See also sim.getObject."#,sim_is_handle,"isHandle",(object_handle:i64)->bool), +(r#"Launches an executable. Similar to os.execute or io.popen, but is system independent."#,sim_launch_executable,"launchExecutable",(filename:String),opt(parameters:String,show_status:i64)->()), +(r#"Loads an image from file or memory. See also sim.saveImage, sim.getScaledImage, sim.transformImage and sim.setVisionSensorImg."#,sim_load_image,"loadImage",(options:i64,filename:String)->(Vec,Vec)), +(r#"Loads a previously saved model, and selects it. See also sim.saveModel, sim.loadScene, and sim.setBoolParam with sim.boolparam_scene_and_model_load_messages."#,sim_load_model,"loadModel",(filename:String)->i64), +(r#"Loads a previously saved scene.See also sim.saveScene, sim.loadModel, simCloseScene and sim.setBoolParam with sim.boolparam_scene_and_model_load_messages. "#,sim_load_scene,"loadScene",(filename:String)->()), +(r#"Converts a transformation matrix to a pose. See also the section about positions, orientations and transformations"#,sim_matrix_to_pose,"matrixToPose",(matrix:Vec)->Vec), +(r#"Creates, modifies or destroys module menu entries. Those are user selectable items located in [Menu bar > Modules]. When selected, the corresponding script will have its sysCall_moduleEntry callback function triggered, or sim_message_eventcallback_moduleentry triggered."#,sim_module_entry,"moduleEntry",(handle:i64),opt(label:String,state:i64)->i64), +(r#"Generates joint movement data using the Ruckig online trajectory generator. This function can only be called from scripts running in a thread, since this is a blocking operation. See also sim.moveToPose, and sim.ruckigPos."#,sim_move_to_config,"moveToConfig",(flags:i64,current_pos:Vec,current_vel:Vec,current_accel:Vec,max_vel:Vec,max_accel:Vec,max_jerk:Vec,target_pos:Vec,target_vel:Vec,callback:String),opt(aux_data:serde_json::Value,cyclic_joints:Vec,time_step:f64)->(Vec,Vec,Vec,f64)), +(r#"Generates object movement data using the Ruckig online trajectory generator, by performing interpolations between two poses. The function can operate by handling 4 movement variables (x,y,z and angle between the two poses), or a single movement variable (t, which requires a metric to be specified for distance calculation between the two poses). This function can only be called from a script running in a thread, since this is a blocking operation. See also sim.moveToConfig, and sim.ruckigPos."#,sim_move_to_pose,"moveToPose",(flags:i64,current_pose:Vec,max_vel:Vec,max_accel:Vec,max_jerk:Vec,target_pose:Vec,callback:String),opt(aux_data:serde_json::Value,metric:Vec,time_step:f64)->(Vec,f64)), +(r#"Multiplies two transformation matrices. See also the section about positions, orientations and transformations"#,sim_multiply_matrices,"multiplyMatrices",(matrix_in1:Vec,matrix_in2:Vec)->Vec), +(r#"Multiplies two poses. See also the section about positions, orientations and transformations"#,sim_multiply_poses,"multiplyPoses",(pose_in1:Vec,pose_in2:Vec)->Vec), +(r#"Multiplies a vector with a pose or a matrix (e.g. v=m*v). See also the section about positions, orientations and transformations"#,sim_multiply_vector,"multiplyVector",(matrix:Vec,in_vectors:Vec)->Vec), +(r#"Packs a table of double floating-point numbers into a string. See also sim.unpackDoubleTable and the other packing/unpacking functions."#,sim_pack_double_table,"packDoubleTable",(double_numbers:Vec),opt(start_double_index:i64,double_count:i64)->Vec), +(r#"Packs a table of floating-point numbers into a string. See also sim.unpackFloatTable and the other packing/unpacking functions."#,sim_pack_float_table,"packFloatTable",(float_numbers:Vec),opt(start_float_index:i64,float_count:i64)->Vec), +(r#" +Packs a table of int32 numbers into a string. See also sim.unpackInt32Table and the other packing/unpacking functions."#,sim_pack_int32_table,"packInt32Table",(int32_numbers:Vec),opt(start_int32_index:i64,int32_count:i64)->Vec), +(r#"Packs a table into a buffer. The table may contain other nested tables, nil, bool, number or string values. All other types (e.g. functions) will be considered as string or nil values. You can also use sim.packTable to quickly compare two tables or to perform a deep copy of a table. See also sim.unpackTable, the other stack functions and the other packing/unpacking functions."#,sim_pack_table,"packTable",(a_table:Vec),opt(scheme:i64)->Vec), +(r#" +Packs a table of uint16 numbers into a string. See also sim.unpackUInt16Table and the other packing/unpacking functions. "#,sim_pack_u_int16_table,"packUInt16Table",(uint16_numbers:Vec),opt(start_uint16_index:i64,uint16_count:i64)->Vec), +(r#" +Packs a table of uint32 numbers into a string. See also sim.unpackUInt32Table and the other packing/unpacking functions."#,sim_pack_u_int32_table,"packUInt32Table",(uint32_numbers:Vec),opt(start_u_int32_index:i64,uint32_count:i64)->Vec), +(r#"Packs a table of uint8 numbers into a string. See also sim.unpackUInt8Table and the other packing/unpacking functions."#,sim_pack_u_int8_table,"packUInt8Table",(uint8_numbers:Vec),opt(start_uint8_index:i64,uint8count:i64)->Vec), +(r#"Requests a pause of a simulation. See also sim.startSimulation, sim.stopSimulation and sim.getSimulationState. See also the simulation state diagram."#,sim_pause_simulation,"pauseSimulation"->i64), +(r#"Reads a block of persistent data. See also sim.persistentDataWrite, sim.getPersistentDataTags, sim.getStringSignal, sim.getInt32Signal, sim.getFloatSignal and sim.readCustomDataBlock."#,sim_persistent_data_read,"persistentDataRead",(data_tag:String)->Vec), +(r#"Writes a persistent data block. Persistent data, valid across all opened simulator scenes, remains until the simulator ends, or until it is cleared by writing an empty data block. If the options flag is set appropriately, then persistent data can also be stored on file, and be automatically reloaded next time CoppeliaSim starts. See also sim.persistentDataRead, sim.setStringSignal, sim.setInt32Signal, sim.setFloatSignal and sim.writeCustomDataBlock."#,sim_persistent_data_write,"persistentDataWrite",(data_tag:String,data_value:Vec),opt(options:i64)->()), +(r#"Converts a pose to a transformation matrix. See also the section about positions, orientations and transformations"#,sim_pose_to_matrix,"poseToMatrix",(pose:Vec)->Vec), +(r#"Pushes a user-triggered event. Messages are received asynchronously via the sysCall_event callback function and via the plugin sim_message_eventcallback_events message call"#,sim_push_user_event,"pushUserEvent",(event:String,handle:i64,uid:i64,event_data:serde_json::Value),opt(options:i64)->()), +(r#"Triggers a quit signal that will eventually quits the application"#,sim_quit_simulator,"quitSimulator"->()), +(r#"Reads custom data that is stored inside of an object or the scene. Reads also custom data for the application's currrent session. See also the other custom data block related functions and the data packing/unpacking functions."#,sim_read_custom_data_block,"readCustomDataBlock",(object_handle:i64,tag_name:String)->Vec), +(r#""#,sim_read_custom_data_block_ex,"readCustomDataBlockEx",(handle:i64,tag_name:String),opt(options:serde_json::Value)->()), +(r#"Reads the tags of all custom data that is stored inside of an object, a scene, or the application. See also sim.readCustomDataBlock."#,sim_read_custom_data_block_tags,"readCustomDataBlockTags",(object_handle:i64)->Vec), +(r#"Reads custom table data that is stored inside of an object or the scene. Reads also custom table data for the application's currrent session. See also the other custom data block related functions."#,sim_read_custom_table_data,"readCustomTableData",(handle:i64,tag_name:String),opt(options:serde_json::Value)->()), +(r#"Reads the force and torque applied to a force sensor (filtered values are read). See also sim.getJointForce."#,sim_read_force_sensor,"readForceSensor",(object_handle:i64)->(i64,Vec,Vec)), +(r#"Reads the state of a proximity sensor. This function doesn't perform detection, it merely reads the result from a previous call to sim.handleProximitySensor (sim.handleProximitySensor is called in the default main script). See also sim.checkProximitySensor, sim.checkProximitySensorEx and sim.resetProximitySensor."#,sim_read_proximity_sensor,"readProximitySensor",(sensor_handle:i64)->(i64,f64,Vec,i64,Vec)), +(r#"Retrieves the RGB data (or a portion of it) related to a specific texture. See also sim.getTextureId, sim.writeTexture and sim.createTexture."#,sim_read_texture,"readTexture",(texture_id:i64,options:i64),opt(pos_x:i64,pos_y:i64,size_x:i64,size_y:i64)->Vec), +(r#"Reads the state of a vision sensor. This function doesn't perform detection, it merely reads the result from a previous call to sim.handleVisionSensor (sim.handleVisionSensor is called in the default main script). See also sim.checkVisionSensor, sim.checkVisionSensorEx and sim.resetVisionSensor."#,sim_read_vision_sensor,"readVisionSensor",(sensor_handle:i64)->(i64,Vec,Vec)), +(r#"Refreshes CoppeliaSim's internal dialogs. Calling sim.refreshDialogs will not trigger a sim.message_eventcallback_refreshdialogs message"#,sim_refresh_dialogs,"refreshDialogs",(refresh_degree:i64)->i64), +(r#"Counterpart function to sim.acquireLock. Unlocking is cumulative"#,sim_release_lock,"releaseLock"->()), +(r#"Repositions and reorients the reference frame of a shape, while keeping the mesh in place. The shape's inertia properties are unaffected. See also sim.alignShapeBB"#,sim_relocate_shape_frame,"relocateShapeFrame",(shape_handle:i64,pose:Vec)->i64), +(r#"Removes a previously added drawing object. See also sim.addDrawingObject and sim.addDrawingObjectItem"#,sim_remove_drawing_object,"removeDrawingObject",(drawing_object_handle:i64)->()), +(r#"Removes a model from the scene. See also sim.removeObjects. +Object destruction always tries to destroy attached scripts before destroying the object itself. If a script tries to destroy the object it is attached to, then the object will first be destroyed, and the script destruction will be delayed. +"#,sim_remove_model,"removeModel",(object_handle:i64)->i64), +(r#"Removes one or several objects from the scene. See also sim.removeModel. +Object destruction always tries to destroy attached scripts before destroying the object itself. If a script tries to destroy the object it is attached to, then the object will first be destroyed, and the script destruction will be delayed. +"#,sim_remove_objects,"removeObjects",(object_handles:Vec)->()), +(r#"Removes a previously added particle object. See also sim.addParticleObject and sim.addParticleObjectItem"#,sim_remove_particle_object,"removeParticleObject",(particle_object_handle:i64)->()), +(r#"Removes points from a point cloud. When a point cloud doesn't use an OC tree calculation structure, then individual points cannot be removed, only all points can be removed in that case. See also sim.insertPointsIntoPointCloud, sim.setPointCloudOptions and the other point cloud related functions."#,sim_remove_points_from_point_cloud,"removePointsFromPointCloud",(point_cloud_handle:i64,options:i64,points:Vec,tolerance:f64)->i64), +(r#""#,sim_remove_referenced_objects,"removeReferencedObjects",(object_handle:i64)->()), +(r#"Removes a script. Not all script types can be removed, and it will also depend on whether simulation is running or not. See also sim.addScript."#,sim_remove_script,"removeScript",(script_handle:i64)->()), +(r#"Removes voxels from an OC tree. See also sim.insertVoxelsIntoOctree and the other OC tree related functions."#,sim_remove_voxels_from_octree,"removeVoxelsFromOctree",(octree_handle:i64,options:i64,points:Vec)->i64), +(r#"Returns a resampled path. See also the other path related functions."#,sim_resample_path,"resamplePath",(path:Vec,path_lengths:Vec,final_config_cnt:i64),opt(method:serde_json::Value,types:Vec)->Vec), +(r#"Dynamically resets an object that is dynamically simulated. This means that the object representation in the dynamics engine is removed, and added again. This can be useful when the set-up of a dynamically simulated chain needs to be modified during simulation (e.g. joint or shape attachement position/orientation changed)."#,sim_reset_dynamic_object,"resetDynamicObject",(object_handle:i64)->()), +(r#"Resets a graph object (i.e. clears all its data streams). See also the other functions related to graphs."#,sim_reset_graph,"resetGraph",(object_handle:i64)->()), +(r#"Clears the detection state, detection color, detection segments, etc. of a proximity sensor object. See also sim.handleProximitySensor."#,sim_reset_proximity_sensor,"resetProximitySensor",(object_handle:i64)->()), +(r#"Clears the detection state, etc. of a proximity sensor object. See also sim.handleVisionSensor."#,sim_reset_vision_sensor,"resetVisionSensor",(sensor_handle:i64)->()), +(r#" +Restores the color of an entity, previously modified with sim.changeEntityColor."#,sim_restore_entity_color,"restoreEntityColor",(original_color_data:Vec)->()), +(r#"Rotates a pose or transformation matrix around a random axis in space. This function, when used in combination with sim.getRotationAxis, can be used to build interpolations between poses or transformation matrices. See also the section about positions, orientations and transformations"#,sim_rotate_around_axis,"rotateAroundAxis",(matrix_in:Vec,axis:Vec,axis_pos:Vec,angle:f64)->Vec), +(r#"Executes a call to the Ruckig online trajectory generator. The Ruckig online trajectory generator provides instantaneous trajectory generation capabilities for motion control systems. This function prepares a position-based trajectory generation object, that can then be calculated with sim.ruckigStep. When this object is not needed anymore, remove it with sim.ruckigRemove. See also sim.ruckigVel, sim.moveToPose and sim.moveToConfig."#,sim_ruckig_pos,"ruckigPos",(dofs:i64,base_cycle_time:f64,flags:i64,current_pos_vel_accel:Vec,max_vel_accel_jerk:Vec,selection:Vec,target_pos_vel:Vec)->i64), +(r#"Removes an object previously created via sim.ruckigPos or sim.ruckigVel."#,sim_ruckig_remove,"ruckigRemove",(handle:i64)->()), +(r#"Executes a call to the Ruckig online trajectory generator. The Ruckig online trajectory generator provides instantaneous trajectory generation capabilities for motion control systems. This function steps forward a trajectory generation algorithm previously prepared via sim.ruckigPos or sim.ruckigVel."#,sim_ruckig_step,"ruckigStep",(handle:i64,cycle_time:f64)->(i64,Vec,f64)), +(r#"Executes a call to the Ruckig online trajectory generator. The Ruckig online trajectory generator provides instantaneous trajectory generation capabilities for motion control systems. This function prepares a velocity-based trajectory generation object, that can then be calculated with sim.ruckigStep. When this object is not needed anymore, remove it with sim.ruckigRemove. See also sim.ruckigPos."#,sim_ruckig_vel,"ruckigVel",(dofs:i64,base_cycle_time:f64,flags:i64,current_pos_vel_accel:Vec,max_accel_jerk:Vec,selection:Vec,target_vel:Vec)->i64), +(r#"Saves an image to file or to memory. See also sim.loadImage, sim.getScaledImage and sim.getVisionSensorImg."#,sim_save_image,"saveImage",(image:Vec,resolution:Vec,options:i64,filename:String,quality:i64)->Vec), +(r#"Saves a model (an object marked as "Object is model base" and all other objects in its hierarchy tree). Any existing file with same name will be overwritten. See also sim.loadModel, and sim.saveScene."#,sim_save_model,"saveModel",(model_base_handle:i64,filename:String)->()), +(r#"Saves a scene. Any existing file with same name will be overwritten. See also sim.loadScene, simCloseScene, and sim.saveModel."#,sim_save_scene,"saveScene",(filename:String)->()), +(r#" +Scales specified objects in a non-isometric fashion, if possible. Only non-compound shapes can be non-isometrically scaled. Some primitive shapes can have some constraints between their axes. See also the other size and scaling functions."#,sim_scale_object,"scaleObject",(object_handle:i64,x_scale:f64,y_scale:f64,z_scale:f64),opt(options:i64)->()), +(r#" +Scales specified objects. All related values are automatically scaled appropriately (e.g. masses, forces, etc.). See also the other size and scaling functions."#,sim_scale_objects,"scaleObjects",(object_handles:Vec,scaling_factor:f64,scale_positions_too:bool)->()), +(r#" +Lua only. Reads how many bytes are waiting to be read on a serial port (RS-232). See also sim.serialRead. "#,sim_serial_check,"serialCheck",(port_handle:i64)->i64), +(r#" +Lua only. Closes a serial port (RS-232). See also sim.serialOpen. "#,sim_serial_close,"serialClose",(port_handle:i64)->()), +(r#"Lua only. Opens a serial port (RS-232) for communication. When called from a script, the function can only be called when the simulation is running (and in that case the port is automatically closed at simulation stop). See also sim.serialClose, sim.serialSend, sim.serialCheck and sim.serialRead."#,sim_serial_open,"serialOpen",(port_string:String,baudrate:i64)->i64), +(r#"Lua only. Reads from a previously opened serial port (RS-232). The C version of the function cannot be blocking. See also sim.serialCheck and sim.serialSend."#,sim_serial_read,"serialRead",(port_handle:i64,data_length_to_read:i64,blocking_operation:bool),opt(closing_string:Vec,timeout:f64)->Vec), +(r#"Lua only. Writes data to a previously opened serial port (RS-232). See also sim.serialRead."#,sim_serial_send,"serialSend",(port_handle:i64,data:Vec)->i64), +(r#"Sets 3 values of an array parameter. See also the other simulator parameter related functions."#,sim_set_array_param,"setArrayParam",(parameter:i64,array_of_values:Vec)->()), +(r#"Allows specifying a thread interruption or yield delay, that will be automatically enforced by the system (preemptive threading). By default this value is 2 ms. For complete control over thread yielding, see also the other thread related functions."#,sim_set_auto_yield_delay,"setAutoYieldDelay",(dt:f64)->()), +(r#"Sets a bool parameter. See also the other simulator parameter related functions."#,sim_set_bool_param,"setBoolParam",(parameter:i64,bool_state:bool)->()), +(r#" +Sets a bool-type physics engine property. You might have to call sim.resetDynamicObject for changes to take effect. See also the other engine properties setter and getter API functions."#,sim_set_engine_bool_param,"setEngineBoolParam",(param_id:i64,object_handle:i64,bool_param:bool)->()), +(r#" +Sets a double-type physics engine property. You might have to call sim.resetDynamicObject for changes to take effect. See also the other engine properties setter and getter API functions."#,sim_set_engine_float_param,"setEngineFloatParam",(param_id:i64,object_handle:i64,float_param:f64)->()), +(r#" +Sets an int32-type physics engine property. You might have to call sim.resetDynamicObject for changes to take effect. See also the other engine properties setter and getter API functions."#,sim_set_engine_int32_param,"setEngineInt32Param",(param_id:i64,object_handle:i64,int32_param:i64)->()), +(r#"Sets the explicit handling flags for a scene object. See also sim.getExplicitHandling."#,sim_set_explicit_handling,"setExplicitHandling",(object_handle:i64,explicit_handling_flags:i64)->()), +(r#"Sets a floating point parameter. See also the other simulator parameter related functions."#,sim_set_float_param,"setFloatParam",(parameter:i64,float_state:f64)->()), +(r#"Sets the value of a double signal. A signal created in a child script, a customization script or int the main script will be automatically cleared when the script ends. See also the other signal functions."#,sim_set_float_signal,"setFloatSignal",(signal_name:String,signal_value:f64)->()), +(r#"Applies a transformation to a graph stream. See also the other functions related to graphs."#,sim_set_graph_stream_transformation,"setGraphStreamTransformation",(graph_handle:i64,stream_id:i64,tr_type:i64),opt(mult:f64,off:f64,mov_avg_period:i64)->()), +(r#"Sets the next value to be recorded for a graph stream. See also the other functions related to graphs."#,sim_set_graph_stream_value,"setGraphStreamValue",(graph_handle:i64,stream_id:i64,value:f64)->()), +(r#"Sets an integer parameter. See also the other simulator parameter related functions."#,sim_set_int32_param,"setInt32Param",(parameter:i64,int_state:i64)->()), +(r#"Sets the value of an integer signal. A signal created in a child script, a customization script or int the main script will be automatically cleared when the script ends. See also the other signal functions."#,sim_set_int32_signal,"setInt32Signal",(signal_name:String,signal_value:i64)->()), +(r#"Sets a joint dependent of another joint. The dependent joint should first be set into dependent mode via sim.setJointMode. See also sim.getJointDependency."#,sim_set_joint_dependency,"setJointDependency",(joint_handle:i64,master_joint_handle:i64,offset:f64,mult_coeff:f64)->()), +(r#"Sets the interval parameters of a joint (i.e. range values). The attributes or interval parameters might have no effect, depending on the joint-type. See also sim.getJointInterval."#,sim_set_joint_interval,"setJointInterval",(object_handle:i64,cyclic:bool,interval:Vec)->()), +(r#"Sets the operation mode of a joint. See also sim.getJointMode and sim.setJointDependency."#,sim_set_joint_mode,"setJointMode",(joint_handle:i64,joint_mode:i64,options:i64)->()), +(r#"Sets the linear/angular position of a joint. Cannot be used with spherical joints (use sim.setObjectChildPose instead). See also sim.getJointPosition and sim.setJointTargetPosition"#,sim_set_joint_position,"setJointPosition",(object_handle:i64,position:f64)->()), +(r#"Sets the force or torque that a joint can exert. See also sim.getJointTargetForce, sim.getJointForce and sim.setJointTargetVelocity."#,sim_set_joint_target_force,"setJointTargetForce",(object_handle:i64,force_or_torque:f64),opt(signed_value:bool)->()), +(r#"Sets the target linear/angular position of a joint. When in kinematic mode, the joint will move according to a motion profile that respects maximum velocity, acceleration and jerk values. In dynamic and position/custom control mode, the controller is instructed about the desired position. See also sim.getJointTargetPosition and sim.setJointPosition."#,sim_set_joint_target_position,"setJointTargetPosition",(object_handle:i64,target_position:f64),opt(motion_params:Vec)->()), +(r#"Sets the target linear/angular velocity of a non-spherical joint. When in kinematic mode, the joint will move according to a motion profile that respects maximum acceleration and jerk values. In dynamic and velocity control mode, the controller is instructed about the desired velocity. See also sim.getJointTargetVelocity."#,sim_set_joint_target_velocity,"setJointTargetVelocity",(object_handle:i64,target_velocity:f64),opt(motion_params:Vec)->()), +(r#"Sets various parameters of a light object. See also sim.getLightParameters."#,sim_set_light_parameters,"setLightParameters",(light_handle:i64,state:i64,reserved:Vec,diffuse_part:Vec,specular_part:Vec)->()), +(r#"Defines (or breaks) a dummy-dummy link pair. Useful to create dynamic loop closure constraints on the fly (among others). See also sim.getLinkDummy."#,sim_set_link_dummy,"setLinkDummy",(dummy_handle:i64,link_dummy_handle:i64)->()), +(r#"Sets the properties of a model. See also sim.getModelProperty, sim.setObjectProperty and sim.setObjectSpecialProperty."#,sim_set_model_property,"setModelProperty",(object_handle:i64,property:i64)->()), +(r#""#,sim_set_named_bool_param,"setNamedBoolParam",(name:String,value:bool)->()), +(r#""#,sim_set_named_float_param,"setNamedFloatParam",(name:String,value:f64)->()), +(r#""#,sim_set_named_int32_param,"setNamedInt32Param",(name:String,value:i64)->()), +(r#"Sets a named string or buffer parameter. See also the other simulator named parameter related functions."#,sim_set_named_string_param,"setNamedStringParam",(param_name:String,string_param:Vec)->()), +(r#"Sets the navigation and selection mode for the mouse. See also sim.getNavigationMode."#,sim_set_navigation_mode,"setNavigationMode",(navigation_mode:i64)->()), +(r#"Sets the alias of an object. See also sim.getObjectAlias."#,sim_set_object_alias,"setObjectAlias",(object_handle:i64,object_alias:String)->()), +(r#"Can be used to set a spherical joint's rotational transformation (the translational part is ignored). See also sim.getObjectChildPose and the section about positions, orientations and transformations"#,sim_set_object_child_pose,"setObjectChildPose",(object_handle:i64,pose:Vec)->()), +(r#" +Sets the color of a scene object. See also other rendering related functions. "#,sim_set_object_color,"setObjectColor",(object_handle:i64,index:i64,color_component:i64,rgb_data:Vec)->bool), +(r#"Sets a floating-point array parameter of a scene object. See also the other object parameter related functions"#,sim_set_object_float_array_param,"setObjectFloatArrayParam",(object_handle:i64,parameter_id:i64,params:Vec)->()), +(r#"Sets a floating-point parameter of a scene object. See also the other object parameter related functions"#,sim_set_object_float_param,"setObjectFloatParam",(object_handle:i64,parameter_id:i64,parameter:f64)->()), +(r#"Sets an int32 parameter of a scene object. See also the other object parameter related functions"#,sim_set_object_int32_param,"setObjectInt32Param",(object_handle:i64,parameter_id:i64,parameter:i64)->()), +(r#"Sets the transformation matrix of an object. Dynamically simulated objects, together with their hierarchy tree, will be dynamically reset (this however does not apply to static shapes). See also sim.getObjectMatrix and the section about positions, orientations and transformations"#,sim_set_object_matrix,"setObjectMatrix",(object_handle:i64,matrix:Vec),opt(relative_to_object_handle:i64)->()), +(r#"Sets the orientation (Euler angles) of an object. Dynamically simulated objects, together with their hierarchy tree, will be dynamically reset (this however does not apply to static shapes). See also sim.getObjectOrientation and the section about positions, orientations and transformations"#,sim_set_object_orientation,"setObjectOrientation",(object_handle:i64,euler_angles:Vec),opt(relative_to_object_handle:i64)->()), +(r#"Sets an object's parent object. Dynamically simulated objects, together with their hierarchy tree, will be dynamically reset (this however does not apply to static shapes). See also sim.getObjectParent."#,sim_set_object_parent,"setObjectParent",(object_handle:i64,parent_object_handle:i64),opt(keep_in_place:bool)->()), +(r#"Sets the pose of an object. Dynamically simulated objects, together with their hierarchy tree, will be dynamically reset (this however does not apply to static shapes). See also sim.getObjectPose and the section about positions, orientations and transformations"#,sim_set_object_pose,"setObjectPose",(object_handle:i64,pose:Vec),opt(relative_to_object_handle:i64)->()), +(r#"Sets the position (x, y and z-coordinates) of an object. Dynamically simulated objects, together with their hierarchy tree, will be dynamically reset (this however does not apply to static shapes). See also sim.getObjectPosition and the section about positions, orientations and transformations"#,sim_set_object_position,"setObjectPosition",(object_handle:i64,position:Vec),opt(relative_to_object_handle:i64)->()), +(r#"Sets the properties of a scene object. See also sim.getObjectProperty, sim.setObjectSpecialProperty and sim.setModelProperty."#,sim_set_object_property,"setObjectProperty",(object_handle:i64,property:i64)->()), +(r#"Sets the quaternion of an object. Dynamically simulated objects, together with their hierarchy tree, will be dynamically reset (this however does not apply to static shapes). See also sim.getObjectQuaternion and the section about positions, orientations and transformations"#,sim_set_object_quaternion,"setObjectQuaternion",(object_handle:i64,quaternion:Vec),opt(relative_to_object_handle:i64)->()), +(r#"Sets the object selection state. See also sim.getObjectSel"#,sim_set_object_sel,"setObjectSel",(object_handles:Vec)->()), +(r#"Sets the special properties of a scene object. See also sim.getObjectSpecialProperty, sim.setObjectProperty and sim.setModelProperty."#,sim_set_object_special_property,"setObjectSpecialProperty",(object_handle:i64,property:i64)->()), +(r#"Sets a string parameter of a scene object. See also the other object parameter related functions"#,sim_set_object_string_param,"setObjectStringParam",(object_handle:i64,parameter_id:i64,parameter:Vec)->()), +(r#"Switches between pages (main scene views). See also sim.getPage."#,sim_set_page,"setPage",(page_index:i64)->()), +(r#"Attaches additional information to a loaded plugin. See also sim.getPluginInfo. +"#,sim_set_plugin_info,"setPluginInfo",(plugin_name:String,info_type:i64,info:String)->()), +(r#"Sets various properties of a point cloud. See also sim.getPointCloudOptions and the other point cloud related functions."#,sim_set_point_cloud_options,"setPointCloudOptions",(point_cloud_handle:i64,max_voxel_size:f64,max_pt_cnt_per_voxel:i64,options:i64,point_size:f64)->()), +(r#" +Attaches a list of custom handles to a given scene object. Those custom handles are handles of other scene objects, that are linked to the given scene object (for whatever purpose). The advantage of storing references to other objects with this function is that CoppeliaSim will take care of correctly adjusting the references if needed: For instance, imagine objectA storing the handle of objectB via this function. If objectB is deleted, then the stored handle will become -1. If objectA and objectB are duplicated at the same time, then the duplicate of objectA will store the handle of the duplicate of objectB. Optionally, if sim.handleflag_keeporiginal is specified, then linking to original objects is guaranteed, e.g. in above example, after a duplication of objectA, the duplicate of objectA will store the handle of the original objectB (if objectB still exists). See also sim.getReferencedHandles. "#,sim_set_referenced_handles,"setReferencedHandles",(object_handle:i64,referenced_handles:Vec)->()), +(r#"Sets an int32 parameter of a script. See also the other functions related to script parameters."#,sim_set_script_int32_param,"setScriptInt32Param",(script_handle:i64,parameter_id:i64,parameter:i64)->()), +(r#"Sets a string parameter of a script. See also the other functions related to script parameters."#,sim_set_script_string_param,"setScriptStringParam",(script_handle:i64,parameter_id:i64,parameter:Vec)->()), +(r#"Sets the size of a shape's bounding box, effectively scaling the shape. Non-isometric scaling is not always possible. See also the other size and scaling functions."#,sim_set_shape_bb,"setShapeBB",(shape_handle:i64,size:Vec)->()), +(r#" +Sets the color of a shape. See also other rendering related functions. "#,sim_set_shape_color,"setShapeColor",(shape_handle:i64,color_name:String,color_component:i64,rgb_data:Vec)->()), +(r#"Applies a new inertia matrix to a shape. If simulation is running, the shape will be dynamically reset (similar to calling sim.resetDynamicObject right after). See also sim.getShapeInertia, sim.setShapeMass and sim.computeMassAndInertia."#,sim_set_shape_inertia,"setShapeInertia",(shape_handle:i64,inertia_matrix:Vec,transformation_matrix:Vec)->()), +(r#"Applies a new mass value to a shape. If simulation is running, the shape will be dynamically reset (similar to calling sim.resetDynamicObject right after). See also sim.getShapeMass, sim.setShapeInertia and sim.computeMassAndInertia."#,sim_set_shape_mass,"setShapeMass",(shape_handle:i64,mass:f64)->()), +(r#"Sets the material (used by the physics engines) of a specific shape. You might have to also call sim.resetDynamicObject for changes to take effect."#,sim_set_shape_material,"setShapeMaterial",(shape_handle:i64,material_id_or_shape_handle:i64)->()), +(r#"Applies (or removes) a texture to a shape. See also sim.getTextureId, sim.getShapeTextureId, sim.createTexture and simApplyTexture."#,sim_set_shape_texture,"setShapeTexture",(shape_handle:i64,texture_id:i64,mapping_mode:i64,options:i64,uv_scaling:Vec),opt(position:Vec,orientation:Vec)->()), +(r#"Enables or disables the stepping operation mode for a threaded script. If enabled, then the current script will have to trigger each simulation step explicitly, via sim.step. Is applied cumulatively, i.e. if the stepping operation mode is enabled n times, it needs to be disabled n times to return to the initial state. For complete control over threaded scripts, see also the other thread related functions + +(Lua specific: in stepping operation mode, automatic thread interruptions, i.e. preemptive threading, is supressed) +"#,sim_set_stepping,"setStepping",(enabled:bool)->i64), +(r#"Sets a string parameter. See also the other simulator parameter related functions."#,sim_set_string_param,"setStringParam",(parameter:i64,string_state:String)->()), +(r#"Sets the value of a string signal. A signal created in a child script, a customization script or int the main script will be automatically cleared when the script ends. See also the other signal functions."#,sim_set_string_signal,"setStringSignal",(signal_name:String,signal_value:Vec)->()), +(r#"Writes the image of a vision sensor (and applies any image processing via the vision callback functions). Make sure the vision sensor is flagged as external input. See also the other vision sensor related API functions"#,sim_set_vision_sensor_img,"setVisionSensorImg",(sensor_handle:i64,image:Vec),opt(options:i64,pos:Vec,size:Vec)->()), +(r#"Requests a start of a simulation (or a resume of a paused simulation). See also sim.pauseSimulation, sim.stopSimulation and sim.getSimulationState. See also the simulation state diagram."#,sim_start_simulation,"startSimulation"->i64), +(r#"Triggers the next simulation step, when in stepping operation mode. When simulation is running, then sim.step will only return once the simulation time has changed. See also sim.setStepping."#,sim_step,"step"->()), +(r#"Requests a stop of the running simulation. See also sim.startSimulation, sim.pauseSimulation and sim.getSimulationState. See also the simulation state diagram."#,sim_stop_simulation,"stopSimulation"->i64), +(r#"Removes an object from an OC tree, as voxel subtractions. See also sim.insertObjectIntoOctree, sim.removeVoxelsFromOctree and the other OC tree related functions."#,sim_subtract_object_from_octree,"subtractObjectFromOctree",(octree_handle:i64,object_handle:i64,options:i64)->i64), +(r#"Removes an object from a point cloud, as a subtraction. See also sim.insertPointsIntoPointCloud, sim.insertObjectIntoPointCloud, sim.removePointsFromPointCloud and the other point cloud related functions."#,sim_subtract_object_from_point_cloud,"subtractObjectFromPointCloud",(point_cloud_handle:i64,object_handle:i64,options:i64,tolerance:f64)->i64), +(r#""#,sim_test_cb,"testCB",(a:i64,cb:String,b:i64)->i64), +(r#"Closes a text edition window previously opened with sim.textEditorOpen."#,sim_text_editor_close,"textEditorClose",(handle:i64)->(String,Vec,Vec)), +(r#"Retieves information from a text edition window previously opened with sim.textEditorOpen."#,sim_text_editor_get_info,"textEditorGetInfo",(handle:i64)->(String,Vec,Vec,bool)), +(r#"Opens a text edition window. See simOpenTextEditor for the C version of this function. See also sim.textEditorClose, sim.textEditorShow and sim.textEditorGetInfo."#,sim_text_editor_open,"textEditorOpen",(init_text:String,properties:String)->i64), +(r#"Shows or hides a text edition window previously opened with sim.textEditorOpen."#,sim_text_editor_show,"textEditorShow",(handle:i64,show_state:bool)->()), +(r#"Modifies a buffer than contains packed data. See also the data packing/unpacking functions."#,sim_transform_buffer,"transformBuffer",(in_buffer:Vec,in_format:i64,multiplier:f64,offset:f64,out_format:i64)->Vec), +(r#"Transforms an image in various ways. See also sim.loadImage, sim.getScaledImage, sim.transformBuffer and sim.combineRgbImages."#,sim_transform_image,"transformImage",(image:Vec,resolution:Vec,options:i64)->()), +(r#"Ungroups a compound shape into several shapes. See also sim.groupShapes, sim.convexDecompose, sim.getQHull, sim.getDecimatedMesh, sim.alignShapeBB and sim.relocateShapeFrame"#,sim_ungroup_shape,"ungroupShape",(shape_handle:i64)->Vec), +(r#"Unpacks a string (or part of it) into a table of double floating-point numbers. See also sim.packDoubleTable and the other packing/unpacking functions."#,sim_unpack_double_table,"unpackDoubleTable",(data:Vec),opt(start_double_index:i64,double_count:i64,additional_byte_offset:i64)->Vec), +(r#"Unpacks a string (or part of it) into a table of floating-point numbers. See also sim.packFloatTable and the other packing/unpacking functions."#,sim_unpack_float_table,"unpackFloatTable",(data:Vec),opt(start_float_index:i64,float_count:i64,additional_byte_offset:i64)->Vec), +(r#"Unpacks a string (or part of it) into a table of int32 numbers. See also sim.packInt32Table and the other packing/unpacking functions."#,sim_unpack_int32_table,"unpackInt32Table",(data:Vec),opt(start_int32_index:i64,int32_count:i64,additional_byte_offset:i64)->Vec), +(r#"Unpacks a buffer into a table. See also sim.packTable, the other stack functions and the other packing/unpacking functions."#,sim_unpack_table,"unpackTable",(buffer:Vec)->serde_json::Value), +(r#"Unpacks a string (or part of it) into a table of uint16 numbers. See also sim.packUInt16Table and the other packing/unpacking functions."#,sim_unpack_u_int16_table,"unpackUInt16Table",(data:Vec),opt(start_uint16_index:i64,uint16_count:i64,additional_byte_offset:i64)->Vec), +(r#"Unpacks a string (or part of it) into a table of uint32 numbers. See also sim.packUInt32Table and the other packing/unpacking functions."#,sim_unpack_u_int32_table,"unpackUInt32Table",(data:Vec),opt(start_uint32_index:i64,uint32_count:i64,additional_byte_offset:i64)->Vec), +(r#"Unpacks a string (or part of it) into a table of uint8 numbers. See also sim.packUInt8Table and the other packing/unpacking functions."#,sim_unpack_u_int8_table,"unpackUInt8Table",(data:Vec),opt(start_uint8_index:i64,uint8count:i64)->Vec), +(r#""#,sim_visit_tree,"visitTree",(root_handle:i64,visitor_func:String),opt(options:serde_json::Value)->()), +(r#"Waits for a certain amount of time. See also sim.waitForSignal."#,sim_wait,"wait",(dt:f64),opt(simulation_time:bool)->f64), +(r#"Waits for a signal. This function will first check whether an integer, double, double or string signal with that name is present (in that order). The function only returns when the signal is present (defined). See also the other signal functions and sim.wait."#,sim_wait_for_signal,"waitForSignal",(sig_name:String)->serde_json::Value), +(r#"Adds or removes custom data to be stored and saved together with an object, or the scene. If the tag name ends with the string "@tmp", then the data will not be saved during a scene or model save operation. The data can also be saved globally for the application (for the current CoppeliaSim session). See also the other custom data block related functions and the data packing/unpacking functions. If you wish to store a reference to another object, have a look at sim.setReferencedHandles."#,sim_write_custom_data_block,"writeCustomDataBlock",(object_handle:i64,tag_name:String,data:Vec)->()), +(r#""#,sim_write_custom_data_block_ex,"writeCustomDataBlockEx",(handle:i64,tag_name:String,data:String),opt(options:serde_json::Value)->()), +(r#"Adds or removes custom table data to be stored and saved together with an object, or the scene. If the tag name ends with the string "@tmp", then the data will not be saved during a scene or model save operation. The data can also be saved globally for the application (for the current CoppeliaSim session). See also the other custom data block related functions."#,sim_write_custom_table_data,"writeCustomTableData",(handle:i64,tag_name:String,the_table:serde_json::Value),opt(options:serde_json::Value)->()), +(r#"Overwrites a specific texture (or a portion of it) with RGB data. See also sim.getTextureId, sim.readTexture and sim.createTexture."#,sim_write_texture,"writeTexture",(texture_id:i64,options:i64,texture_data:Vec),opt(pos_x:i64,pos_y:i64,size_x:i64,size_y:i64,interpol:f64)->()), +(r#"Converts Yaw-Pitch-Roll angles to CoppeliaSim's alpha-beta-gamma angles. See also sim.alphaBetaGammaToYawPitchRoll and the section about positions, orientations and transformations"#,sim_yaw_pitch_roll_to_alpha_beta_gamma,"yawPitchRollToAlphaBetaGamma",(yaw_angle:f64,pitch_angle:f64,roll_angle:f64)->(f64,f64,f64)), +(r#""#,sim_yield,"yield"->()) } } \ No newline at end of file diff --git a/c_transpiler/assets/sim_ik_api.rs b/c_transpiler/assets/sim_ik_api.rs index 0caa255..b8acf8c 100644 --- a/c_transpiler/assets/sim_ik_api.rs +++ b/c_transpiler/assets/sim_ik_api.rs @@ -1,82 +1,83 @@ use crate::RemoteApiClientInterface; +#[doc=r#"API functions for creating kinematics tasks. All units, unless otherwise indicated, are specified in meters and radians."#] pub trait SimIK : RemoteApiClientInterface { requests!{ "simIK", -(sim_ik_add_element,"addElement",(environment_handle:i64,ik_group_handle:i64,tip_dummy_handle:i64)->i64), -(sim_ik_add_element_from_scene,"addElementFromScene",(environment_handle:i64,ik_group:i64,base_handle:i64,tip_handle:i64,target_handle:i64,constraints:i64)->(i64,serde_json::Value,serde_json::Value)), -(sim_ik_compute_group_jacobian,"computeGroupJacobian",(environment_handle:i64,ik_group_handle:i64)->(Vec,Vec)), -(sim_ik_compute_jacobian,"computeJacobian",(environment_handle:i64,base_object:i64,last_joint:i64,constraints:i64,tip_matrix:Vec),opt(target_matrix:Vec,constr_base_matrix:Vec)->(Vec,Vec)), -(sim_ik_create_debug_overlay,"createDebugOverlay",(environment_handle:i64,tip_handle:i64),opt(base_handle:i64)->i64), -(sim_ik_create_dummy,"createDummy",(environment_handle:i64),opt(dummy_name:String)->i64), -(sim_ik_create_environment,"createEnvironment",opt(flags:i64)->i64), -(sim_ik_create_group,"createGroup",(environment_handle:i64),opt(ik_group_name:String)->i64), -(sim_ik_create_joint,"createJoint",(environment_handle:i64,joint_type:i64),opt(joint_name:String)->i64), -(sim_ik_does_group_exist,"doesGroupExist",(environment_handle:i64,ik_group_name:String)->bool), -(sim_ik_does_object_exist,"doesObjectExist",(environment_handle:i64,object_name:String)->bool), -(sim_ik_duplicate_environment,"duplicateEnvironment",(environment_handle:i64)->i64), -(sim_ik_erase_debug_overlay,"eraseDebugOverlay",(debug_object:i64)->()), -(sim_ik_erase_environment,"eraseEnvironment",(environment_handle:i64)->()), -(sim_ik_erase_object,"eraseObject",(environment_handle:i64,object_handle:i64)->()), -(sim_ik_find_config,"findConfig",(environment_handle:i64,ik_group_handle:i64,joint_handles:Vec),opt(threshold_dist:f64,max_time:f64,metric:Vec,validation_callback:String,aux_data:serde_json::Value)->Vec), -(sim_ik_generate_path,"generatePath",(environment_handle:i64,ik_group_handle:i64,joint_handles:Vec,tip_handle:i64,path_point_count:i64),opt(validation_callback:String,aux_data:serde_json::Value)->Vec), -(sim_ik_get_alternate_configs,"getAlternateConfigs",(environment_handle:i64,joint_handles:Vec),opt(low_limits:Vec,ranges:Vec)->Vec), -(sim_ik_get_element_base,"getElementBase",(environment_handle:i64,ik_group_handle:i64,element_handle:i64)->(i64,i64)), -(sim_ik_get_element_constraints,"getElementConstraints",(environment_handle:i64,ik_group_handle:i64,element_handle:i64)->i64), -(sim_ik_get_element_flags,"getElementFlags",(environment_handle:i64,ik_group_handle:i64,element_handle:i64)->i64), -(sim_ik_get_element_precision,"getElementPrecision",(environment_handle:i64,ik_group_handle:i64,element_handle:i64)->Vec), -(sim_ik_get_element_weights,"getElementWeights",(environment_handle:i64,ik_group_handle:i64,element_handle:i64)->Vec), -(sim_ik_get_failure_description,"getFailureDescription",(reason:i64)->String), -(sim_ik_get_group_calculation,"getGroupCalculation",(environment_handle:i64,ik_group_handle:i64)->(i64,f64,i64)), -(sim_ik_get_group_flags,"getGroupFlags",(environment_handle:i64,ik_group_handle:i64)->i64), -(sim_ik_get_group_handle,"getGroupHandle",(environment_handle:i64,ik_group_name:String)->i64), -(sim_ik_get_group_joint_limit_hits,"getGroupJointLimitHits",(environment_handle:i64,ik_group_handle:i64)->(Vec,Vec)), -(sim_ik_get_group_joints,"getGroupJoints",(environment_handle:i64,ik_group_handle:i64)->Vec), -(sim_ik_get_joint_dependency,"getJointDependency",(environment_handle:i64,joint_handle:i64)->(i64,f64,f64)), -(sim_ik_get_joint_interval,"getJointInterval",(environment_handle:i64,joint_handle:i64)->(bool,Vec)), -(sim_ik_get_joint_limit_margin,"getJointLimitMargin",(environment_handle:i64,joint_handle:i64)->f64), -(sim_ik_get_joint_matrix,"getJointMatrix",(environment_handle:i64,joint_handle:i64)->Vec), -(sim_ik_get_joint_max_step_size,"getJointMaxStepSize",(environment_handle:i64,joint_handle:i64)->f64), -(sim_ik_get_joint_mode,"getJointMode",(environment_handle:i64,joint_handle:i64)->i64), -(sim_ik_get_joint_position,"getJointPosition",(environment_handle:i64,joint_handle:i64)->f64), -(sim_ik_get_joint_screw_lead,"getJointScrewLead",(environment_handle:i64,joint_handle:i64)->f64), -(sim_ik_get_joint_transformation,"getJointTransformation",(environment_handle:i64,joint_handle:i64)->(Vec,Vec,Vec)), -(sim_ik_get_joint_type,"getJointType",(environment_handle:i64,joint_handle:i64)->i64), -(sim_ik_get_joint_weight,"getJointWeight",(environment_handle:i64,joint_handle:i64)->f64), -(sim_ik_get_object_handle,"getObjectHandle",(environment_handle:i64,object_name:String)->i64), -(sim_ik_get_object_matrix,"getObjectMatrix",(environment_handle:i64,object_handle:i64),opt(relative_to_object_handle:i64)->Vec), -(sim_ik_get_object_parent,"getObjectParent",(environment_handle:i64,object_handle:i64)->i64), -(sim_ik_get_object_pose,"getObjectPose",(environment_handle:i64,object_handle:i64),opt(relative_to_object_handle:i64)->Vec), -(sim_ik_get_object_transformation,"getObjectTransformation",(environment_handle:i64,object_handle:i64),opt(relative_to_object_handle:i64)->(Vec,Vec,Vec)), -(sim_ik_get_object_type,"getObjectType",(environment_handle:i64,object_handle:i64)->i64), -(sim_ik_get_objects,"getObjects",(environment_handle:i64,index:i64)->(i64,String,bool,i64)), -(sim_ik_get_target_dummy,"getTargetDummy",(environment_handle:i64,dummy_handle:i64)->i64), -(sim_ik_handle_group,"handleGroup",(environment_handle:i64,ik_group:i64),opt(options:serde_json::Value)->(i64,i64,Vec)), -(sim_ik_handle_groups,"handleGroups",(environment_handle:i64,ik_groups:Vec),opt(options:serde_json::Value)->(i64,i64,Vec)), -(sim_ik_load,"load",(environment_handle:i64,data:String)->()), -(sim_ik_save,"save",(environment_handle:i64)->String), -(sim_ik_set_element_base,"setElementBase",(environment_handle:i64,ik_group_handle:i64,element_handle:i64,base_handle:i64),opt(constraints_base_handle:i64)->()), -(sim_ik_set_element_constraints,"setElementConstraints",(environment_handle:i64,ik_group_handle:i64,element_handle:i64,constraints:i64)->()), -(sim_ik_set_element_flags,"setElementFlags",(environment_handle:i64,ik_group_handle:i64,element_handle:i64,flags:i64)->()), -(sim_ik_set_element_precision,"setElementPrecision",(environment_handle:i64,ik_group_handle:i64,element_handle:i64,precision:Vec)->()), -(sim_ik_set_element_weights,"setElementWeights",(environment_handle:i64,ik_group_handle:i64,element_handle:i64,weights:Vec)->()), -(sim_ik_set_group_calculation,"setGroupCalculation",(environment_handle:i64,ik_group_handle:i64,method:i64,damping:f64,max_iterations:i64)->()), -(sim_ik_set_group_flags,"setGroupFlags",(environment_handle:i64,ik_group_handle:i64,flags:i64)->()), -(sim_ik_set_joint_dependency,"setJointDependency",(environment_handle:i64,joint_handle:i64,master_joint_handle:i64),opt(offset:f64,mult:f64,callback:String)->()), -(sim_ik_set_joint_interval,"setJointInterval",(environment_handle:i64,joint_handle:i64,cyclic:bool),opt(interval:Vec)->()), -(sim_ik_set_joint_limit_margin,"setJointLimitMargin",(environment_handle:i64,joint_handle:i64,margin:f64)->()), -(sim_ik_set_joint_max_step_size,"setJointMaxStepSize",(environment_handle:i64,joint_handle:i64,step_size:f64)->()), -(sim_ik_set_joint_mode,"setJointMode",(environment_handle:i64,joint_handle:i64,joint_mode:i64)->()), -(sim_ik_set_joint_position,"setJointPosition",(environment_handle:i64,joint_handle:i64,position:f64)->()), -(sim_ik_set_joint_screw_lead,"setJointScrewLead",(environment_handle:i64,joint_handle:i64,lead:f64)->()), -(sim_ik_set_joint_weight,"setJointWeight",(environment_handle:i64,joint_handle:i64,weight:f64)->()), -(sim_ik_set_object_matrix,"setObjectMatrix",(environment_handle:i64,object_handle:i64,matrix:Vec),opt(relative_to_object_handle:i64)->()), -(sim_ik_set_object_parent,"setObjectParent",(environment_handle:i64,object_handle:i64,parent_object_handle:i64),opt(keep_in_place:bool)->()), -(sim_ik_set_object_pose,"setObjectPose",(environment_handle:i64,object_handle:i64,pose:Vec),opt(relative_to_object_handle:i64)->()), -(sim_ik_set_object_transformation,"setObjectTransformation",(environment_handle:i64,object_handle:i64,position:Vec,euler_or_quaternion:Vec),opt(relative_to_object_handle:i64)->()), -(sim_ik_set_spherical_joint_matrix,"setSphericalJointMatrix",(environment_handle:i64,joint_handle:i64,matrix:Vec)->()), -(sim_ik_set_spherical_joint_rotation,"setSphericalJointRotation",(environment_handle:i64,joint_handle:i64,euler_or_quaternion:Vec)->()), -(sim_ik_set_target_dummy,"setTargetDummy",(environment_handle:i64,dummy_handle:i64,target_dummy_handle:i64)->()), -(sim_ik_sync_from_sim,"syncFromSim",(environment_handle:i64,ik_groups:Vec)->()), -(sim_ik_sync_to_sim,"syncToSim",(environment_handle:i64,ik_groups:Vec)->()) +(r#"Adds a new IK element to an IK group."#,sim_ik_add_element,"addElement",(environment_handle:i64,ik_group_handle:i64,tip_dummy_handle:i64)->i64), +(r#"Convenience function to quickly generate an IK element from a kinematic chain in the scene"#,sim_ik_add_element_from_scene,"addElementFromScene",(environment_handle:i64,ik_group:i64,base_handle:i64,tip_handle:i64,target_handle:i64,constraints:i64)->(i64,serde_json::Value,serde_json::Value)), +(r#"Computes the Jacobian and error vector for an IK group"#,sim_ik_compute_group_jacobian,"computeGroupJacobian",(environment_handle:i64,ik_group_handle:i64)->(Vec,Vec)), +(r#"Computes the Jacobian and error vector for a kinematic chain"#,sim_ik_compute_jacobian,"computeJacobian",(environment_handle:i64,base_object:i64,last_joint:i64,constraints:i64,tip_matrix:Vec),opt(target_matrix:Vec,constr_base_matrix:Vec)->(Vec,Vec)), +(r#"Creates a visual representation of an IK chain."#,sim_ik_create_debug_overlay,"createDebugOverlay",(environment_handle:i64,tip_handle:i64),opt(base_handle:i64)->i64), +(r#"Creates a dummy object."#,sim_ik_create_dummy,"createDummy",(environment_handle:i64),opt(dummy_name:String)->i64), +(r#"Creates an new IK environment."#,sim_ik_create_environment,"createEnvironment",opt(flags:i64)->i64), +(r#"Creates an IK group."#,sim_ik_create_group,"createGroup",(environment_handle:i64),opt(ik_group_name:String)->i64), +(r#"Creates a joint object."#,sim_ik_create_joint,"createJoint",(environment_handle:i64,joint_type:i64),opt(joint_name:String)->i64), +(r#"Checks whether an IK group exists, based on its name."#,sim_ik_does_group_exist,"doesGroupExist",(environment_handle:i64,ik_group_name:String)->bool), +(r#"Checks whether an object exists, based on its name."#,sim_ik_does_object_exist,"doesObjectExist",(environment_handle:i64,object_name:String)->bool), +(r#"Duplicates an IK environment. Useful when operating on an environment while leaving the original environment unchanged."#,sim_ik_duplicate_environment,"duplicateEnvironment",(environment_handle:i64)->i64), +(r#"Removes the visual representation of an IK chain."#,sim_ik_erase_debug_overlay,"eraseDebugOverlay",(debug_object:i64)->()), +(r#"Erases an IK environment."#,sim_ik_erase_environment,"eraseEnvironment",(environment_handle:i64)->()), +(r#"Erases an object."#,sim_ik_erase_object,"eraseObject",(environment_handle:i64,object_handle:i64)->()), +(r#"Searches for a manipulator configuration that matches the target dummy/dummies position/orientation in space. Search is randomized. One should call simIK.getAlternateConfigs for each returned configuration, if some revolute joints of the manipulator have a range of more than 360 degrees, in order to generate some equivalent poses but alternate configurations. The IK environment remains unchanged."#,sim_ik_find_config,"findConfig",(environment_handle:i64,ik_group_handle:i64,joint_handles:Vec),opt(threshold_dist:f64,max_time:f64,metric:Vec,validation_callback:String,aux_data:serde_json::Value)->Vec), +(r#"Generates a path that drives the IK tip onto its IK target, in a straight line (i.e. shortest path in Cartesian space). The function returns a path in the configuration space if the operation was successful. A reason for a non-successful operation can be: there are some forbidden poses/configurations on the way, or some of the configuration points cannot be reached (e.g. out of reach, or due to joint limits). The IK environment remains unchanged."#,sim_ik_generate_path,"generatePath",(environment_handle:i64,ik_group_handle:i64,joint_handles:Vec,tip_handle:i64,path_point_count:i64),opt(validation_callback:String,aux_data:serde_json::Value)->Vec), +(r#"Useful when called after simIK.findConfig: generates alternative manipulator configurations, for a same end-effector pose, for a manipulator that has revolute joints with a range larger than 360 degrees. The original submitted configuration will be part of the returned configurations. The IK environment remains unchanged."#,sim_ik_get_alternate_configs,"getAlternateConfigs",(environment_handle:i64,joint_handles:Vec),opt(low_limits:Vec,ranges:Vec)->Vec), +(r#"Retrieves the base object of an IK element."#,sim_ik_get_element_base,"getElementBase",(environment_handle:i64,ik_group_handle:i64,element_handle:i64)->(i64,i64)), +(r#"Retrieves the constraints of an IK element."#,sim_ik_get_element_constraints,"getElementConstraints",(environment_handle:i64,ik_group_handle:i64,element_handle:i64)->i64), +(r#"Retrieves various flags of an IK element."#,sim_ik_get_element_flags,"getElementFlags",(environment_handle:i64,ik_group_handle:i64,element_handle:i64)->i64), +(r#"Retrieves the precision settings of an IK element."#,sim_ik_get_element_precision,"getElementPrecision",(environment_handle:i64,ik_group_handle:i64,element_handle:i64)->Vec), +(r#"Retrieves the desired linear and angular resolution weights of an IK element."#,sim_ik_get_element_weights,"getElementWeights",(environment_handle:i64,ik_group_handle:i64,element_handle:i64)->Vec), +(r#""#,sim_ik_get_failure_description,"getFailureDescription",(reason:i64)->String), +(r#"Retrieves calculation properties for an IK group."#,sim_ik_get_group_calculation,"getGroupCalculation",(environment_handle:i64,ik_group_handle:i64)->(i64,f64,i64)), +(r#"Retrieves flags of an IK group."#,sim_ik_get_group_flags,"getGroupFlags",(environment_handle:i64,ik_group_handle:i64)->i64), +(r#"Retrieves the handle of an IK group based on its name."#,sim_ik_get_group_handle,"getGroupHandle",(environment_handle:i64,ik_group_name:String)->i64), +(r#"Checks which joints of an IK group hit a limit last time that IK group was handled"#,sim_ik_get_group_joint_limit_hits,"getGroupJointLimitHits",(environment_handle:i64,ik_group_handle:i64)->(Vec,Vec)), +(r#"Returns the joint handles involved in the IK group calculation, i.e. one handle per Jacobian column (except with revolute joints that have 3 corresponding Jacobian columns)"#,sim_ik_get_group_joints,"getGroupJoints",(environment_handle:i64,ik_group_handle:i64)->Vec), +(r#"Retrieves information about a possible joint dependency."#,sim_ik_get_joint_dependency,"getJointDependency",(environment_handle:i64,joint_handle:i64)->(i64,f64,f64)), +(r#"Retrieves the joint limits."#,sim_ik_get_joint_interval,"getJointInterval",(environment_handle:i64,joint_handle:i64)->(bool,Vec)), +(r#"Retrieves the limit margin of a joint, i.e. the threshold that will be used to counteract on joint limit violation during IK resolution, if the appropriate IK group flag was set"#,sim_ik_get_joint_limit_margin,"getJointLimitMargin",(environment_handle:i64,joint_handle:i64)->f64), +(r#"Retrieves the intrinsic transformation matrix of a joint."#,sim_ik_get_joint_matrix,"getJointMatrix",(environment_handle:i64,joint_handle:i64)->Vec), +(r#"Retrieves the maximum step size of a joint."#,sim_ik_get_joint_max_step_size,"getJointMaxStepSize",(environment_handle:i64,joint_handle:i64)->f64), +(r#"Retrieves the joint mode."#,sim_ik_get_joint_mode,"getJointMode",(environment_handle:i64,joint_handle:i64)->i64), +(r#"Retrieves the position (linear or angular) of a joint."#,sim_ik_get_joint_position,"getJointPosition",(environment_handle:i64,joint_handle:i64)->f64), +(r#"Retrieves the screw lead of a revolute joint."#,sim_ik_get_joint_screw_lead,"getJointScrewLead",(environment_handle:i64,joint_handle:i64)->f64), +(r#"Retrieves the intrinsic transformation of a joint."#,sim_ik_get_joint_transformation,"getJointTransformation",(environment_handle:i64,joint_handle:i64)->(Vec,Vec,Vec)), +(r#"Retrieves the joint type."#,sim_ik_get_joint_type,"getJointType",(environment_handle:i64,joint_handle:i64)->i64), +(r#"Retrieves the IK weight of a joint, i.e. the weight it has during IK resolution."#,sim_ik_get_joint_weight,"getJointWeight",(environment_handle:i64,joint_handle:i64)->f64), +(r#"Retrieves the handle of an object based on its name."#,sim_ik_get_object_handle,"getObjectHandle",(environment_handle:i64,object_name:String)->i64), +(r#"Retrieves the transformation matrix of an object. If the object is a joint object, the matrix does not include the joint's intrinsic transformation."#,sim_ik_get_object_matrix,"getObjectMatrix",(environment_handle:i64,object_handle:i64),opt(relative_to_object_handle:i64)->Vec), +(r#"Retrieves an object's parent handle."#,sim_ik_get_object_parent,"getObjectParent",(environment_handle:i64,object_handle:i64)->i64), +(r#"Retrieves the pose (position and quaternion) of an object. If the object is a joint object, the pose does not include the joint's intrinsic transformation."#,sim_ik_get_object_pose,"getObjectPose",(environment_handle:i64,object_handle:i64),opt(relative_to_object_handle:i64)->Vec), +(r#"Retrieves the transformation (position and quaternion/euler angles) of an object. If the object is a joint object, the transformation does not include the joint's intrinsic transformation."#,sim_ik_get_object_transformation,"getObjectTransformation",(environment_handle:i64,object_handle:i64),opt(relative_to_object_handle:i64)->(Vec,Vec,Vec)), +(r#"Retrieves the type of an object."#,sim_ik_get_object_type,"getObjectType",(environment_handle:i64,object_handle:i64)->i64), +(r#"Allows to loop through all objects in the environment."#,sim_ik_get_objects,"getObjects",(environment_handle:i64,index:i64)->(i64,String,bool,i64)), +(r#"Retrieves the handle of the target dummy associated with a tip dummy"#,sim_ik_get_target_dummy,"getTargetDummy",(environment_handle:i64,dummy_handle:i64)->i64), +(r#"Handles (i.e. computes/resolves) an IK group. Convenience function for simIK.handleIkGroups(ikEnv,{ikGroupHandle},..)"#,sim_ik_handle_group,"handleGroup",(environment_handle:i64,ik_group:i64),opt(options:serde_json::Value)->(i64,i64,Vec)), +(r#"Handles (i.e. computes/resolves) one or several IK groups"#,sim_ik_handle_groups,"handleGroups",(environment_handle:i64,ik_groups:Vec),opt(options:serde_json::Value)->(i64,i64,Vec)), +(r#"Loads kinematic content previously exported in the CoppeliaSim application. Make sure that the environment is empty before calling this function."#,sim_ik_load,"load",(environment_handle:i64,data:String)->()), +(r#"Saves the kinematic content of an IK environment."#,sim_ik_save,"save",(environment_handle:i64)->String), +(r#"Sets the base object of an IK element."#,sim_ik_set_element_base,"setElementBase",(environment_handle:i64,ik_group_handle:i64,element_handle:i64,base_handle:i64),opt(constraints_base_handle:i64)->()), +(r#"Sets the constraints of an IK element."#,sim_ik_set_element_constraints,"setElementConstraints",(environment_handle:i64,ik_group_handle:i64,element_handle:i64,constraints:i64)->()), +(r#"Sets various flags of an IK element."#,sim_ik_set_element_flags,"setElementFlags",(environment_handle:i64,ik_group_handle:i64,element_handle:i64,flags:i64)->()), +(r#"Sets the desired precision of an IK element."#,sim_ik_set_element_precision,"setElementPrecision",(environment_handle:i64,ik_group_handle:i64,element_handle:i64,precision:Vec)->()), +(r#"Sets the desired linear and angular resolution weights of an IK element."#,sim_ik_set_element_weights,"setElementWeights",(environment_handle:i64,ik_group_handle:i64,element_handle:i64,weights:Vec)->()), +(r#"Sets calculation properties for an IK group."#,sim_ik_set_group_calculation,"setGroupCalculation",(environment_handle:i64,ik_group_handle:i64,method:i64,damping:f64,max_iterations:i64)->()), +(r#"Sets flags of an IK group."#,sim_ik_set_group_flags,"setGroupFlags",(environment_handle:i64,ik_group_handle:i64,flags:i64)->()), +(r#"Sets information about a possible dependent joint."#,sim_ik_set_joint_dependency,"setJointDependency",(environment_handle:i64,joint_handle:i64,master_joint_handle:i64),opt(offset:f64,mult:f64,callback:String)->()), +(r#"Sets the joint limits."#,sim_ik_set_joint_interval,"setJointInterval",(environment_handle:i64,joint_handle:i64,cyclic:bool),opt(interval:Vec)->()), +(r#"Sets the limit margin of a joint, i.e. the threshold that will be used to counteract on joint limit violation during IK resolution, if the appropriate IK group flag was set"#,sim_ik_set_joint_limit_margin,"setJointLimitMargin",(environment_handle:i64,joint_handle:i64,margin:f64)->()), +(r#"Sets the maximum step size of a joint."#,sim_ik_set_joint_max_step_size,"setJointMaxStepSize",(environment_handle:i64,joint_handle:i64,step_size:f64)->()), +(r#"Sets the joint mode."#,sim_ik_set_joint_mode,"setJointMode",(environment_handle:i64,joint_handle:i64,joint_mode:i64)->()), +(r#"Sets the position (linear or angular) of a joint."#,sim_ik_set_joint_position,"setJointPosition",(environment_handle:i64,joint_handle:i64,position:f64)->()), +(r#"Sets the screw lead, in case of a revolute joint."#,sim_ik_set_joint_screw_lead,"setJointScrewLead",(environment_handle:i64,joint_handle:i64,lead:f64)->()), +(r#"Sets the IK weight of a joint, i.e. the weight it has during IK resolution."#,sim_ik_set_joint_weight,"setJointWeight",(environment_handle:i64,joint_handle:i64,weight:f64)->()), +(r#"Sets the transformation matrix of an object. If the object is a joint object, the matrix does not include the joint's intrinsic transformation."#,sim_ik_set_object_matrix,"setObjectMatrix",(environment_handle:i64,object_handle:i64,matrix:Vec),opt(relative_to_object_handle:i64)->()), +(r#"Sets the parent of an object."#,sim_ik_set_object_parent,"setObjectParent",(environment_handle:i64,object_handle:i64,parent_object_handle:i64),opt(keep_in_place:bool)->()), +(r#"Sets the pose (position and quaternion) of an object. If the object is a joint object, the pose does not include the joint's intrinsic transformation."#,sim_ik_set_object_pose,"setObjectPose",(environment_handle:i64,object_handle:i64,pose:Vec),opt(relative_to_object_handle:i64)->()), +(r#"Sets the transformation (position and quaternion/Euler angles) of an object. If the object is a joint object, the transformation does not include the joint's intrinsic transformation."#,sim_ik_set_object_transformation,"setObjectTransformation",(environment_handle:i64,object_handle:i64,position:Vec,euler_or_quaternion:Vec),opt(relative_to_object_handle:i64)->()), +(r#"Sets the rotation transformation matrix of a spherical joint."#,sim_ik_set_spherical_joint_matrix,"setSphericalJointMatrix",(environment_handle:i64,joint_handle:i64,matrix:Vec)->()), +(r#"Sets the rotation transformation of a spherical joint."#,sim_ik_set_spherical_joint_rotation,"setSphericalJointRotation",(environment_handle:i64,joint_handle:i64,euler_or_quaternion:Vec)->()), +(r#"Associates a tip dummy with a target dummy, or removes that association. If the tip dummy is already associated with another target dummy, then first remove that association before setting another one"#,sim_ik_set_target_dummy,"setTargetDummy",(environment_handle:i64,dummy_handle:i64,target_dummy_handle:i64)->()), +(r#"Convenience function to apply the scene state to its ik environment counterpart. Use together with simIK.addElementFromScene."#,sim_ik_sync_from_sim,"syncFromSim",(environment_handle:i64,ik_groups:Vec)->()), +(r#"Convenience function to apply inverse kinematic values computed in the IK world, to the scene. Use together with simIK.addElementFromScene."#,sim_ik_sync_to_sim,"syncToSim",(environment_handle:i64,ik_groups:Vec)->()) } } \ No newline at end of file diff --git a/c_transpiler/convert.py b/c_transpiler/convert.py index cec90ca..21e7c0b 100644 --- a/c_transpiler/convert.py +++ b/c_transpiler/convert.py @@ -1,6 +1,7 @@ from dataclasses import dataclass from pathlib import Path from ir_transpiler import FunctionAssign +from reference_scraping import reference_scraping from scanner import Scanner @@ -9,17 +10,29 @@ from parser import parser from ir_transpiler import ir_to_macro_request_rust, ir_to_py import inflection +import sys -def cpp_to_rust(assigns: list[FunctionAssign], rust_file: Path, api_name: str) -> None: +@dataclass +class API: + header: Path + api_name: str + file_name: str + description: str + + +def cpp_to_rust(assigns: list[FunctionAssign], rust_file: Path, api: API) -> None: space = ' '*4 + api_name = api.api_name + trait_name = inflection.camelize(api_name) rust_assigns = [ir_to_macro_request_rust( assign, api_name) for assign in assigns] rust_string = ",\n".join(rust_assigns) content = 'use crate::RemoteApiClientInterface;\n' + content += f'''#[doc=r#"{api.description}"#]\n''' content += f'pub trait {trait_name} : RemoteApiClientInterface {{\n{space}requests!{{\n"{api_name}",\n{rust_string}\n}}\n}}' rust_file.write_text(content) @@ -47,23 +60,48 @@ def cpp_to_py(assigns: list[FunctionAssign], py_file: Path, protocol_name: str) py_file.write_text(content) -@dataclass -class API: - header: Path - api_name: str - file_name: str - - def main(): assets = Path('assets') sim_ik_h = assets / Path('sim_ik_api_header.h') sim_h = assets / Path('sim_api_header.h') + if len(sys.argv) != 2: + print('you shoud pass the coppeliasim dir as argument') + exit(1) + coppeliasim_dir = Path(sys.argv[1]) + regular_api_dir = reference_scraping.get_regular_api_dir(coppeliasim_dir) + sim_ik_reference_file = reference_scraping.get_sim_ik_file(coppeliasim_dir) + + sim_ik_description = reference_scraping.scraping_sim_ik_api_description( + coppeliasim_dir) + sim_description = reference_scraping.scraping_regular_api_description( + coppeliasim_dir) apis = [ - API(sim_ik_h, 'simIK', 'sim_ik_api'), - API(sim_h, 'sim', 'sim_api'), + API(sim_ik_h, 'simIK', 'sim_ik_api', sim_ik_description), + API(sim_h, 'sim', 'sim_api', sim_description), ] + def sim_function_description(assign: FunctionAssign) -> str: + try: + descrip = reference_scraping.scraping_regular_api_function( + assign.function_name, regular_api_dir) + except Exception: + descrip = '' + print(f'Unable to find reference for sim {assign.function_name}') + return descrip + + def sim_ik_function_description(assign: FunctionAssign) -> str: + try: + descrip = reference_scraping.scraping_sim_ik_api_function( + assign.function_name, sim_ik_reference_file) + except Exception: + descrip = '' + print(f'Unable to find reference for SimIK {assign.function_name}') + return descrip + + descriptions = {apis[0].api_name: sim_ik_function_description, + apis[1].api_name: sim_function_description} + for api in apis: content = api.header.read_text() stream = StringStream(content) @@ -71,11 +109,14 @@ def main(): assigns = parser(scanner, stream) + for assign in assigns: + assign.description = descriptions[api.api_name](assign) + rust_file = assets / Path(f'{api.file_name}.rs') python_file = assets / Path(f'{api.file_name}.py') - cpp_to_rust(assigns, rust_file, api.api_name) - cpp_to_py(assigns, python_file, api.api_name) + cpp_to_rust(assigns, rust_file, api) + # cpp_to_py(assigns, python_file, api.api_name) if __name__ == '__main__': diff --git a/c_transpiler/ir_transpiler/ir.py b/c_transpiler/ir_transpiler/ir.py index a75e170..2dc3777 100644 --- a/c_transpiler/ir_transpiler/ir.py +++ b/c_transpiler/ir_transpiler/ir.py @@ -4,6 +4,7 @@ from dataclasses import dataclass from cpp_token import TokenType + @dataclass class TypeNode: cpp_type: TokenType @@ -20,4 +21,5 @@ class Arg: class FunctionAssign: return_type: TypeNode function_name: str - function_args: list[Arg] \ No newline at end of file + function_args: list[Arg] + description: str = '' diff --git a/c_transpiler/ir_transpiler/ir_to_macro_request_rust.py b/c_transpiler/ir_transpiler/ir_to_macro_request_rust.py index e9d6d73..9e4c45c 100644 --- a/c_transpiler/ir_transpiler/ir_to_macro_request_rust.py +++ b/c_transpiler/ir_transpiler/ir_to_macro_request_rust.py @@ -24,7 +24,8 @@ def ir_to_macro_request_rust(assign: FunctionAssign, api_name: str) -> str: option_args) != 0 else "" return_type_string = f'->{return_type}' if return_type else "" - return f'({rust_func_name},"{assign.function_name}"{required_args_string}{opt_string}{return_type_string})' + docstring = assign.description + return f'(r#"{docstring}"#,{rust_func_name},"{assign.function_name}"{required_args_string}{opt_string}{return_type_string})' def arg_to_rust(arg: Arg) -> str: diff --git a/c_transpiler/reference_scraping/__init__.py b/c_transpiler/reference_scraping/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/c_transpiler/reference_scraping/__init__.py @@ -0,0 +1 @@ + diff --git a/c_transpiler/reference_scraping/reference_scraping.py b/c_transpiler/reference_scraping/reference_scraping.py new file mode 100644 index 0000000..d8cfdb7 --- /dev/null +++ b/c_transpiler/reference_scraping/reference_scraping.py @@ -0,0 +1,132 @@ +from pathlib import Path +import inflection +from bs4 import BeautifulSoup + + +def scraping_regular_api(function_names: list[str], coppeliasim_dir: Path) -> dict[str, str]: + """Expecting function_names like: [ 'loadScene','setJointMaxForce'], and the simulator dir""" + regular_api_dir = get_regular_api_dir(coppeliasim_dir) + + function_descriptions = {} + + for function_name in function_names: + description = scraping_regular_api_function( + function_name, + regular_api_dir) + function_descriptions[function_name] = description + + return function_descriptions + + +def scraping_regular_api_description(coppeliasim_dir: Path) -> str: + en = get_regular_api_dir(coppeliasim_dir).parent + index = en / 'apiFunctions.htm' + soup = BeautifulSoup(index.read_text(), 'html.parser') + description = _get_text_for_warning_box(soup) + return description + + +def scraping_sim_ik_api_description(coppeliasim_dir: Path) -> str: + sim_ik_file = get_sim_ik_file(coppeliasim_dir) + soup = BeautifulSoup(sim_ik_file.read_text(), 'html.parser') + description = _get_text_for_warning_box(soup) + return description + + +def _get_text_for_warning_box(soup: BeautifulSoup) -> str: + + p = soup.find("p", {"class": "warningBox"}) + if p is None: + raise Exception('Unable to find Regular API description') + + return p.text + + +def scraping_sim_ik_api(function_names: list[str], coppeliasim_dir: Path) -> dict[str, str]: + + function_descriptions = {} + + sim_ik_file = get_sim_ik_file(coppeliasim_dir) + + for name in function_names: + description = scraping_sim_ik_api_function(name, sim_ik_file) + function_descriptions[name] = description + + return function_descriptions + + +def get_regular_api_dir(coppeliasim_dir: Path) -> Path: + return coppeliasim_dir/'helpFiles'/'en'/'regularApi' + + +def get_sim_ik_file(coppeliasim_dir: Path) -> Path: + return coppeliasim_dir/'helpFiles'/'en'/'simIK.htm' + + +def scraping_regular_api_function(function_name: str, regular_api_dir: Path) -> str: + + name = inflection.camelize(function_name) + reference_function_name = f'sim{name}' + reference_file = regular_api_dir / f'{reference_function_name}.htm' + if not reference_file.exists(): + raise Exception( + f'Unable to find {function_name} and your file: {reference_file}') + + html = reference_file.read_text() + description = _scraping_sim_api_html(html) + + return description + + +def scraping_sim_ik_api_function(function_name: str, sim_ik_file: Path) -> str: + name = f'simIK.{function_name}' # id="simIK.addIkElement" + soup = BeautifulSoup(sim_ik_file.read_text(), 'html.parser') + a_tag = soup.find("a", {"id": name}) + + if a_tag is None: + raise Exception( + f'Unable to find {function_name} in SimIK') + + # getting the next table of p + ''' +

+ + + + + + ... +
DescriptionAdds a new IK element to an IK group.
+ ''' + p_tag = a_tag.parent + + if p_tag is None: + raise Exception( + f'Unable to find p tag of{function_name} in SimIK') + table_tag = p_tag.next_sibling + + if table_tag is None: + raise Exception( + f'Unable to find table tag of{function_name} in SimIK') + + td_tag = table_tag.find_next("td", {"class": "apiTableRightDescr"}) + + if td_tag is None: + raise Exception( + f'Unable to find description tag of{function_name} in SimIK') + + description = td_tag.text + + return description + + +def _scraping_sim_api_html(html: str) -> str: + """returning the function description""" + soup = BeautifulSoup(html, 'html.parser') + + description_td = soup.find("td", {"class": "apiTableRightDescr"}) + + if description_td is None: + raise Exception('Unable to find description by class') + + return description_td.text diff --git a/c_transpiler/requirements.txt b/c_transpiler/requirements.txt index a48eeeb..27da01f 100644 --- a/c_transpiler/requirements.txt +++ b/c_transpiler/requirements.txt @@ -1,4 +1,6 @@ autopep8==1.7.0 +beautifulsoup4==4.12.2 inflection==0.5.1 pycodestyle==2.9.1 +soupsieve==2.5 toml==0.10.2 diff --git a/c_transpiler/tests/test_assets/helpFiles/en/apiFunctions.htm b/c_transpiler/tests/test_assets/helpFiles/en/apiFunctions.htm new file mode 100755 index 0000000..4d8ef6d --- /dev/null +++ b/c_transpiler/tests/test_assets/helpFiles/en/apiFunctions.htm @@ -0,0 +1,1459 @@ + + + + + +regular API reference + + + + + +
+ + + + + +
+

+ + + +

Regular API reference

+ + +

The list of API functions below allows you to access many CoppeliaSim parameters. There are however too many parameters in CoppeliaSim to have a specific API function for each one of them. Auxiliary parameters can be accessed via a set of given functions that use object parameter IDs. Refer also to the global parameter IDs.
+All units going to, or coming from the API are in meters, kilograms, seconds and radians or a combination of those (unless otherwise explicitly indicated). +

+ + + +

File operations

+ sim.closeScene + sim.saveScene + sim.loadScene + sim.saveModel + sim.loadModel + sim.importShape + sim.importMesh + sim.exportMesh + sim.launchExecutable + sim.createTexture + +
+ simCloseScene + simSaveScene + simLoadScene + simSaveModel + simLoadModel + simDoesFileExist + simImportShape + simImportMesh + simExportMesh + simCreateTexture + +
+ + + +

General object handle retrieval

+ sim.getObject + sim.getObjectFromUid + sim.isHandle + sim.getObjects + sim.getObjectsInTree + sim.getCollectionObjects + sim.setReferencedHandles + sim.getReferencedHandles + +
+ simGetObject + simGetObjectFromUid + simIsHandle + simGetObjects + simGetObjectsInTree + simGetCollectionObjects + simSetReferencedHandles + simGetReferencedHandles + +
+ + + +

General functionality handling

+ sim.handleChildScripts + sim.handleEmbeddedScripts + sim.handleAddOnScripts + sim.handleSandboxScript + +
+ + + +

Collision detection

+ sim.checkCollision + sim.checkCollisionEx + +
+ simCheckCollision + simCheckCollisionEx + +
+ + + +

Minimum distance calculation

+ sim.checkDistance + +
+ simCheckDistance + +
+ + + +

Dynamics

+ sim.handleDynamics + sim.setJointTargetPosition + sim.setJointTargetVelocity + sim.readForceSensor + sim.getJointForce + sim.getJointTargetForce + sim.setJointTargetForce + sim.addForce + sim.addForceAndTorque + sim.getVelocity + sim.getLinkDummy + sim.setLinkDummy + sim.resetDynamicObject + sim.addParticleObject + sim.addParticleObjectItem + sim.removeParticleObject + sim.getContactInfo + sim.getShapeMass + sim.setShapeMass + sim.getShapeInertia + sim.setShapeInertia + sim.computeMassAndInertia + sim.createForceSensor + sim.convexDecompose + sim.getQHull + sim.getDecimatedMesh + sim.isDynamicallyEnabled + sim.setShapeMaterial + + See also: + physics engine parameter functions. + +
+ simHandleDynamics + simSetJointTargetPosition + simSetJointTargetVelocity + simReadForceSensor + simGetJointForce + simGetJointTargetForce + simSetJointTargetForce + simAddForce + simAddForceAndTorque + simGetVelocity + simGetLinkDummy + simSetLinkDummy + simResetDynamicObject + simGetContactInfo + simGetShapeMass + simSetShapeMass + simGetShapeInertia + simSetShapeInertia + simComputeMassAndInertia + simCreateForceSensor + simConvexDecompose + simGetQHull + simGetDecimatedMesh + simIsDynamicallyEnabled + simSetShapeMaterial + +
+ + + +

Proximity sensors

+ sim.handleProximitySensor + sim.readProximitySensor + sim.resetProximitySensor + sim.checkProximitySensor + sim.checkProximitySensorEx + sim.checkProximitySensorEx2 + sim.createProximitySensor + + See also: + object parameter functions and parameters related to proximity sensors. + +
+ simHandleProximitySensor + simReadProximitySensor + simResetProximitySensor + simCheckProximitySensor + simCheckProximitySensorEx + simCheckProximitySensorEx2 + simCreateProximitySensor + +
+ + + +

Vision sensors

+ sim.handleVisionSensor + sim.readVisionSensor + sim.resetVisionSensor + sim.checkVisionSensor + sim.checkVisionSensorEx + sim.getVisionSensorDepth + sim.getVisionSensorImg + sim.setVisionSensorImg + sim.getVisionSensorRes + sim.adjustView + sim.createVisionSensor + sim.getExtensionString + + See also: + object parameter functions and parameters related to vision sensors. + +
+ simHandleVisionSensor + simReadVisionSensor + simResetVisionSensor + simCheckVisionSensor + simCheckVisionSensorEx + simGetVisionSensorDepth + simGetVisionSensorImg + simSetVisionSensorImg + simGetVisionSensorRes + simAdjustView + simCreateVisionSensor + simGetExtensionString + +
+ + + +

Force sensors

+ sim.readForceSensor + sim.createForceSensor + + See also: + object parameter functions and parameters related to force sensors. + +
+ simReadForceSensor + simCreateForceSensor + +
+ + + +

Joints

+ sim.setJointPosition + sim.getJointPosition + sim.setJointTargetPosition + sim.getJointTargetPosition + sim.setJointTargetVelocity + sim.getJointTargetVelocity + sim.getJointVelocity + sim.getObjectChildPose + sim.setObjectChildPose + sim.setJointInterval + sim.getJointInterval + sim.getJointType + sim.createJoint + sim.setJointMode + sim.getJointMode + sim.setJointDependency + sim.getJointDependency + sim.getJointForce + sim.getJointTargetForce + sim.setJointTargetForce + + See also: + object parameter functions and parameters related to joints. + physics engine parameter functions. + +
+ simSetJointPosition + simGetJointPosition + simSetJointTargetPosition + simGetJointTargetPosition + simSetJointTargetVelocity + simGetJointTargetVelocity + simGetJointVelocity + simGetObjectChildPose + simSetObjectChildPose + simSetJointInterval + simGetJointInterval + simGetJointType + simCreateJoint + simSetJointMode + simGetJointMode + simSetJointDependency + simGetJointDependency + simGetJointForce + simGetJointTargetForce + simSetJointTargetForce + +
+ + + +

Shapes

+ sim.addForce + sim.addForceAndTorque + sim.getVelocity + sim.getShapeColor + sim.setShapeColor + sim.getShapeTextureId + sim.setShapeTexture + sim.createShape + sim.createPrimitiveShape + sim.createHeightfieldShape + sim.getShapeMesh + sim.getShapeViz + sim.getShapeGeomInfo + sim.getShapeMass + sim.setShapeMass + sim.getShapeInertia + sim.setShapeInertia + sim.computeMassAndInertia + sim.groupShapes + sim.ungroupShape + sim.importShape + sim.convexDecompose + sim.getQHull + sim.getDecimatedMesh + sim.alignShapeBB + sim.relocateShapeFrame + sim.setShapeMaterial + sim.getShapeBB + sim.setShapeBB + sim.getExtensionString + sim.generateTextShape + + See also: + object parameter functions and parameters related to shapes. + physics engine parameter functions. + +
+ simAddForce + simAddForceAndTorque + simGetVelocity + simGetShapeColor + simSetShapeColor + simGetShapeTextureId + simSetShapeTexture + simCreateShape + simCreatePrimitiveShape + simCreateHeightfieldShape + simGetShapeMesh + simGetShapeViz + simApplyTexture + simGetShapeGeomInfo + simGetShapeMass + simSetShapeMass + simGetShapeInertia + simSetShapeInertia + simComputeMassAndInertia + simGroupShapes + simUngroupShape + simImportShape + simConvexDecompose + simGetQHull + simGetDecimatedMesh + simAlignShapeBB + simRelocateShapeFrame + simSetShapeMaterial + simGetExtensionString + +
+ + + +

Graphs

+ sim.addGraphStream + sim.setGraphStreamTransformation + sim.setGraphStreamValue + sim.addGraphCurve + sim.destroyGraphCurve + sim.duplicateGraphCurveToStatic + sim.handleGraph + sim.resetGraph + + See also: + object parameter functions and parameters related to graphs. + +
+ simAddGraphStream + simSetGraphStreamTransformation + simSetGraphStreamValue + simAddGraphCurve + simDestroyGraphCurve + simDuplicateGraphCurveToStatic + simHandleGraph + simResetGraph + +
+ + + +

Lights

+ sim.getLightParameters + sim.setLightParameters + sim.getExtensionString + + See also: + object parameter functions and parameters related to lights. + +
+ simGetLightParameters + simSetLightParameters + simGetExtensionString + +
+ + + +

Cameras

+ sim.cameraFitToView + sim.adjustView + sim.getExtensionString + + See also: + object parameter functions and parameters related to cameras. + +
+ simCameraFitToView + simAdjustView + simGetExtensionString + +
+ + + +

Dummies

+ sim.createDummy + sim.getLinkDummy + sim.setLinkDummy + + See also: + object parameter functions and parameters related to dummies. + +
+ simCreateDummy + simGetLinkDummy + simSetLinkDummy + +
+ + + +

OC trees

+ sim.createOctree + sim.insertVoxelsIntoOctree + sim.removeVoxelsFromOctree + sim.insertObjectIntoOctree + sim.subtractObjectFromOctree + sim.getOctreeVoxels + sim.checkOctreePointOccupancy + + See also: + object parameter functions and parameters related to OC trees. + +
+ simCreateOctree + simInsertVoxelsIntoOctree + simRemoveVoxelsFromOctree + simInsertObjectIntoOctree + simSubtractObjectFromOctree + simGetOctreeVoxels + simCheckOctreePointOccupancy + +
+ + + +

Point clouds

+ sim.createPointCloud + sim.getPointCloudOptions + sim.setPointCloudOptions + sim.insertPointsIntoPointCloud + sim.removePointsFromPointCloud + sim.subtractObjectFromPointCloud + sim.intersectPointsWithPointCloud + sim.insertObjectIntoPointCloud + sim.getPointCloudPoints + + See also: + object parameter functions and parameters related to point clouds. + +
+ simCreatePointCloud + simGetPointCloudOptions + simSetPointCloudOptions + simInsertPointsIntoPointCloud + simRemovePointsFromPointCloud + simSubtractObjectFromPointCloud + simIntersectPointsWithPointCloud + simInsertObjectIntoPointCloud + simGetPointCloudPoints + +
+ + + +

Paths

+ sim.createPath + sim.getConfigDistance + sim.getPathLengths + sim.getPathInterpolatedConfig + sim.resamplePath + sim.generateTimeOptimalTrajectory + sim.generateShapeFromPath + sim.getClosestPosOnPath +
+ simGenerateShapeFromPath + simGetClosestPosOnPath + +
+ + + +

Scene objects

+ sim.getObject + sim.getObjectUid + sim.isHandle + sim.removeObjects + sim.removeModel + sim.getObjectAlias + sim.setObjectAlias + sim.getObjects + sim.getObjectsInTree + sim.getObjectParent + sim.setObjectParent + sim.getObjectChild + sim.getObjectMatrix + sim.setObjectMatrix + sim.getObjectPose + sim.setObjectPose + sim.getObjectPosition + sim.setObjectPosition + sim.getObjectOrientation + sim.setObjectOrientation + sim.getObjectQuaternion + sim.setObjectQuaternion + sim.getObjectType + sim.getObjectSel + sim.setObjectSel + sim.getObjectSizeFactor + sim.copyPasteObjects + sim.scaleObject + sim.scaleObjects + sim.getObjectProperty + sim.setObjectProperty + sim.getObjectSpecialProperty + sim.setObjectSpecialProperty + sim.getObjectVelocity + sim.readCustomTableData + sim.writeCustomTableData + sim.readCustomDataBlock + sim.readCustomDataBlockTags + sim.writeCustomDataBlock + sim.setReferencedHandles + sim.getReferencedHandles + sim.isDynamicallyEnabled + sim.getObjectColor + sim.setObjectColor + + See also: + object parameter functions and parameters related to scene objects. + +
+ simGetObject + simGetObjectUid + simIsHandle + simRemoveObjects + simRemoveModel + simGetObjectAlias + simSetObjectAlias + simGetObjects + simGetObjectsInTree + simGetObjectParent + simSetObjectParent + simGetObjectChild + simGetObjectMatrix + simSetObjectMatrix + simGetObjectPose + simSetObjectPose + simGetObjectPosition + simSetObjectPosition + simGetObjectOrientation + simSetObjectOrientation + simGetObjectQuaternion + simSetObjectQuaternion + simGetObjectType + simGetObjectSel + simSetObjectSel + simGetObjectSizeFactor + simCopyPasteObjects + simScaleObject + simScaleObjects + simGetObjectProperty + simSetObjectProperty + simGetObjectSpecialProperty + simSetObjectSpecialProperty + simGetObjectVelocity + simReadCustomDataBlock + simReadCustomDataBlockTags + simWriteCustomDataBlock + simSetReferencedHandles + simGetReferencedHandles + simIsDynamicallyEnabled + simGetObjectColor + simSetObjectColor + +
+ + + +

Object size / scaling

+ sim.getObjectSizeFactor + sim.scaleObject + sim.scaleObjects + sim.getShapeBB + sim.setShapeBB + +
+ simGetObjectSizeFactor + simScaleObject + simScaleObjects + +
+ + + +

Collections

+ sim.createCollection + sim.destroyCollection + sim.addItemToCollection + sim.getCollectionObjects + +
+ simCreateCollectionEx + simDestroyCollection + simAddItemToCollection + simGetCollectionObjects + +
+ + + +

Serial port

+ sim.serialCheck + sim.serialClose + sim.serialOpen + sim.serialRead + sim.serialSend + +
+ simSerialCheck + simSerialClose + simSerialOpen + simSerialRead + simSerialSend + +
+ + + +

Rendering

+ sim.addDrawingObject + sim.addDrawingObjectItem + sim.removeDrawingObject + sim.getShapeColor + sim.setShapeColor + sim.getObjectColor + sim.setObjectColor + sim.changeEntityColor + sim.restoreEntityColor + sim.getGenesisEvents + +
+ simAddDrawingObject + simAddDrawingObjectItem + simRemoveDrawingObject + simGetShapeColor + simSetShapeColor + simGetObjectColor + simSetObjectColor + +
+ + + +

Particle objects

+ sim.addParticleObject + sim.addParticleObjectItem + sim.removeParticleObject + +
+ + + +

Models

+ sim.getModelProperty + sim.setModelProperty + sim.saveModel + sim.loadModel + +
+ simGetModelProperty + simSetModelProperty + simSaveModel + simLoadModel + +
+ + + +

Object selection

+ sim.getObjectSel + sim.setObjectSel + +
+ simGetObjectSel + simSetObjectSel + +
+ + + +

Object creation

+ sim.createDummy + sim.createForceSensor + sim.createHeightfieldShape + sim.createJoint + sim.createShape + sim.createProximitySensor + sim.createPrimitiveShape + sim.createVisionSensor + sim.createOctree + sim.createPointCloud + sim.createTexture + sim.generateTextShape + sim.generateShapeFromPath + +
+ simCreateDummy + simCreateForceSensor + simCreateHeightfieldShape + simCreateJoint + simCreateShape + simCreateProximitySensor + simCreatePrimitiveShape + simCreateVisionSensor + simCreateOctree + simCreatePointCloud + simCreateTexture + simGenerateShapeFromPath + +
+ + + +

Scripts

+ sim.getRandom + sim.getScript + sim.isHandle + sim.addScript + sim.initScript + sim.removeScript + sim.callScriptFunction + sim.getScriptFunctions + sim.executeScriptString + sim.getApiFunc + sim.getApiInfo + sim.handleChildScripts + sim.handleEmbeddedScripts + sim.handleAddOnScripts + sim.handleSandboxScript + sim.setScriptText + sim.registerScriptFuncHook + sim.getStackTraceback + + See also: + functions related to script parameters + +
+ simGetScriptHandleEx + simIsHandle + simAddScript + simInitScript + simRemoveScript + simCallScriptFunction + simCallScriptFunctionEx + simExecuteScriptString + simGetApiFunc + simGetApiInfo + simResetScript + simGetScriptProperty + simGetScriptText + simSetScriptText + simRegisterScriptCallbackFunction + simRegisterScriptVariable + simRegisterScriptFuncHook + +
+ + + +

Simulation

+ sim.startSimulation + sim.pauseSimulation + sim.stopSimulation + sim.getSimulationState + sim.getSimulationTime + sim.getSimulationTimeStep + sim.getRealTimeSimulation + +
+ simStartSimulation + simPauseSimulation + simStopSimulation + simGetSimulationState + simGetSimulationTime + simGetSimulationTimeStep + simGetRealTimeSimulation + +
+ + + +

Threads

+ sim.setStepping + sim.step + sim.setAutoYieldDelay + sim.acquireLock + sim.releaseLock + sim.getSimulationStopping + sim.handleExtCalls + +
+ + + +

Custom scripts

+ sim.registerScriptFuncHook + +
+ simRegisterScriptCallbackFunction + simRegisterScriptVariable + simRegisterScriptFuncHook + +
+ + + +

Transformations

+ sim.buildMatrix + sim.buildPose + sim.getEulerAnglesFromMatrix + sim.matrixToPose + sim.poseToMatrix + sim.multiplyMatrices + sim.multiplyPoses + sim.interpolateMatrices + sim.interpolatePoses + sim.getMatrixInverse + sim.getPoseInverse + sim.getObjectMatrix + sim.setObjectMatrix + sim.getObjectPose + sim.setObjectPose + sim.getObjectPosition + sim.setObjectPosition + sim.getObjectOrientation + sim.setObjectOrientation + sim.getObjectQuaternion + sim.setObjectQuaternion + sim.getObjectChildPose + sim.setObjectChildPose + sim.multiplyVector + sim.getRotationAxis + sim.rotateAroundAxis + sim.getObjectVelocity + sim.alignShapeBB + sim.relocateShapeFrame + sim.alphaBetaGammaToYawPitchRoll + sim.yawPitchRollToAlphaBetaGamma + + See also: + packing/unpacking functions + +
+ simBuildMatrix + simBuildPose + simGetEulerAnglesFromMatrix + simMatrixToPose + simPoseToMatrix + simMultiplyMatrices + simMultiplyPoses + simInterpolateMatrices + simInterpolatePoses + simInvertMatrix + simInvertPose + simGetObjectMatrix + simSetObjectMatrix + simGetObjectPose + simSetObjectPose + simGetObjectPosition + simSetObjectPosition + simGetObjectOrientation + simSetObjectOrientation + simGetObjectQuaternion + simSetObjectQuaternion + simGetObjectChildPose + simSetObjectChildPose + simTransformVector + simGetRotationAxis + simRotateAroundAxis + simGetObjectVelocity + simAlignShapeBB + simRelocateShapeFrame + +
+ + + +

Messaging

+ loadPlugin + unloadPlugin + sim.addLog + sim.getSimulatorMessage + sim.serialCheck + sim.serialClose + sim.serialOpen + sim.serialRead + sim.serialSend + sim.setInt32Signal + sim.getInt32Signal + sim.clearInt32Signal + sim.setFloatSignal + sim.getFloatSignal + sim.clearFloatSignal + sim.setStringSignal + sim.getStringSignal + sim.clearStringSignal + sim.getSignalName + sim.waitForSignal + sim.auxiliaryConsoleClose + sim.auxiliaryConsoleOpen + sim.auxiliaryConsolePrint + sim.persistentDataRead + sim.persistentDataWrite + sim.getPersistentDataTags + sim.getMatchingPersistentDataTags + sim.callScriptFunction + sim.getScriptFunctions + sim.executeScriptString + sim.getObjectUid + sim.getGenesisEvents + sim.broadcastMsg + sim.pushUserEvent + +
+ simAddLog + simSetLastError + simGetSimulatorMessage + simSerialCheck + simSerialClose + simSerialOpen + simSerialRead + simSerialSend + simSetInt32Signal + simGetInt32Signal + simClearInt32Signal + simSetFloatSignal + simGetFloatSignal + simClearFloatSignal + simSetStringSignal + simGetStringSignal + simClearStringSignal + simGetSignalName + simAuxiliaryConsoleClose + simAuxiliaryConsoleOpen + simAuxiliaryConsolePrint + simPersistentDataRead + simPersistentDataWrite + simGetPersistentDataTags + simCallScriptFunctionEx + simExecuteScriptString + simGetObjectUid + +
+ + + +

Signals

+ sim.setInt32Signal + sim.getInt32Signal + sim.clearInt32Signal + sim.setFloatSignal + sim.getFloatSignal + sim.clearFloatSignal + sim.setStringSignal + sim.getStringSignal + sim.clearStringSignal + sim.getSignalName + sim.waitForSignal + + See also: + data packing/unpacking. + persistent data. + +
+ simSetInt32Signal + simGetInt32Signal + simClearInt32Signal + simSetFloatSignal + simGetFloatSignal + simClearFloatSignal + simSetStringSignal + simGetStringSignal + simClearStringSignal + simGetSignalName + +
+ + + +

Persistent Data

+ sim.persistentDataRead + sim.persistentDataWrite + sim.getPersistentDataTags + sim.getMatchingPersistentDataTags + +
+ simPersistentDataRead + simPersistentDataWrite + simGetPersistentDataTags + +
+ + + +

Custom data blocks

+ sim.readCustomTableData + sim.writeCustomTableData + sim.readCustomDataBlock + sim.readCustomDataBlockTags + sim.writeCustomDataBlock + + See also: + data packing/unpacking. + +
+ simReadCustomDataBlock + simReadCustomDataBlockTags + simWriteCustomDataBlock + +
+ + + +

Textures

+ sim.getTextureId + sim.getShapeTextureId + sim.readTexture + sim.saveImage + sim.loadImage + sim.getScaledImage + sim.transformImage + sim.writeTexture + sim.createTexture + sim.setShapeTexture + +
+ simApplyTexture + simGetTextureId + simGetShapeTextureId + simReadTexture + simSaveImage + simLoadImage + simGetScaledImage + simTransformImage + simWriteTexture + simCreateTexture + simSetShapeTexture + +
+ + + +

Blocking functions

+ sim.wait + sim.waitForSignal + sim.moveToConfig + sim.moveToPose + sim.serialRead + +
+ + + +

Auxiliary consoles

+ sim.auxiliaryConsoleClose + sim.auxiliaryConsoleOpen + sim.auxiliaryConsolePrint + sim.auxiliaryConsoleShow + + See also: + Custom user interfaces. + +
+ simAuxiliaryConsoleClose + simAuxiliaryConsoleOpen + simAuxiliaryConsolePrint + simAuxiliaryConsoleShow + +
+ + + +

Text/code editors

+ sim.textEditorClose + sim.textEditorGetInfo + sim.textEditorOpen + sim.textEditorShow + + See also: + Custom user interfaces. + +
+ + + +

Import/export

+ sim.importShape + sim.importMesh + sim.exportMesh + sim.createTexture + sim.loadImage + sim.saveImage + sim.generateTextShape + + See also: + Assimp plugin API reference. + +
+ simImportShape + simImportMesh + simExportMesh + simCreateTexture + simLoadImage + simSaveImage + +
+ + + +

Pages and views

+ sim.floatingViewAdd + sim.floatingViewRemove + sim.adjustView + sim.cameraFitToView + +
+ simFloatingViewAdd + simFloatingViewRemove + simAdjustView + simCameraFitToView + +
+ + + +

Ruckig motion library

+ sim.moveToConfig + sim.moveToPose + sim.ruckigPos + sim.ruckigVel + sim.ruckigStep + sim.ruckigRemove + +
+ simRuckigPos + simRuckigVel + simRuckigStep + simRuckigRemove + +
+ + + +

Packing / unpacking

+sim.packTable + sim.unpackTable + sim.packUInt8Table + sim.unpackUInt8Table + sim.packUInt16Table + sim.unpackUInt16Table + sim.packUInt32Table + sim.unpackUInt32Table + sim.packInt32Table + sim.unpackInt32Table + sim.packFloatTable + sim.unpackFloatTable + sim.packDoubleTable + sim.unpackDoubleTable + sim.copyTable + sim.transformBuffer + +
+ simPackTable + simUnpackTable + +
+ + + +

Stacks

+ sim.packTable + sim.unpackTable + +
+ simCreateStack + simReleaseStack + simCopyStack + simPushNullOntoStack + simPushBoolOntoStack + simPushInt32OntoStack + simPushInt64OntoStack + simPushFloatOntoStack + simPushDoubleOntoStack + simPushStringOntoStack + simPushUInt8TableOntoStack + simPushInt32TableOntoStack + simPushInt64TableOntoStack + simPushFloatTableOntoStack + simPushDoubleTableOntoStack + simPushTableOntoStack + simInsertDataIntoStackTable + simGetStackSize + simPopStackItem + simGetStackItemType + simMoveStackItemToTop + simGetStackBoolValue + simGetStackInt32Value + simGetStackInt64Value + simGetStackFloatValue + simGetStackDoubleValue + simGetStackStringValue + simGetStackTableInfo + simGetStackUInt8Table + simGetStackInt32Table + simGetStackInt64Table + simGetStackFloatTable + simGetStackDoubleTable + simUnfoldStackTable + simDebugStack + simPackTable + simUnpackTable + +
+ + + +

Object parameters

+ sim.getObjectInt32Param + sim.setObjectInt32Param + sim.getObjectFloatParam + sim.setObjectFloatParam + sim.getObjectStringParam + sim.setObjectStringParam + sim.getObjectFloatArrayParam + sim.setObjectFloatArrayParam + +
+ simGetObjectInt32Param + simSetObjectInt32Param + simGetObjectFloatParam + simSetObjectFloatParam + simGetObjectStringParam + simSetObjectStringParam + simGetObjectFloatArrayParam + simSetObjectFloatArrayParam + +
+ + + +

Script parameters

+ sim.getScriptInt32Param + sim.setScriptInt32Param + sim.getScriptStringParam + sim.setScriptStringParam + +
+ simGetScriptInt32Param + simSetScriptInt32Param + simGetScriptStringParam + simSetScriptStringParam + +
+ + + +

Simulator parameters

+ sim.setArrayParam + sim.getArrayParam + sim.setBoolParam + sim.getBoolParam + sim.setInt32Param + sim.getInt32Param + sim.setFloatParam + sim.getFloatParam + sim.setStringParam + sim.getStringParam + sim.setNamedStringParam + sim.getNamedStringParam + +
+ simSetArrayParam + simGetArrayParam + simSetBoolParam + simGetBoolParam + simSetInt32Param + simGetInt32Param + simSetFloatParam + simGetFloatParam + simSetStringParam + simGetStringParam + simSetNamedStringParam + simGetNamedStringParam + simGetUInt64Parameter + +
+ + + +

Simulator named parameters

+ sim.setNamedStringParam + sim.getNamedStringParam + sim.getNamedBoolParam + sim.getNamedFloatParam + sim.getNamedInt32Param + +
+ simSetNamedStringParam + simGetNamedStringParam + +
+ + + +

Physics engine parameters

+ sim.getEngineFloatParam + sim.getEngineInt32Param + sim.getEngineBoolParam + sim.setEngineFloatParam + sim.setEngineInt32Param + sim.setEngineBoolParam + +
+ simGetEngineFloatParam + simGetEngineInt32Param + simGetEngineBoolParam + simSetEngineFloatParam + simSetEngineInt32Param + simSetEngineBoolParam + +
+ + + +

Other commands

+ sim.addLog + sim.announceSceneContentChange + sim.getNavigationMode + sim.setNavigationMode + sim.getPage + sim.setPage + sim.getLastInfo + sim.getPluginName + sim.getPluginInfo + sim.setPluginInfo + sim.getNavigationMode + sim.getSystemTime + sim.refreshDialogs + sim.setAutoYieldDelay + sim.step + sim.getExplicitHandling + sim.setExplicitHandling + sim.launchExecutable + sim.quitSimulator + sim.getExtensionString + sim.textEditorClose + sim.textEditorGetInfo + sim.textEditorOpen + sim.textEditorShow + sim.getUserVariables + sim.moduleEntry + sim.getGenesisEvents + sim.pushUserEvent + +
+ simAddLog + simAnnounceSceneContentChange + simGetNavigationMode + simSetNavigationMode + simGetPage + simSetPage + simGetLastInfo + simGetLastError + simSetLastError + simGetPluginName + simGetPluginInfo + simSetPluginInfo + simGetNavigationMode + simRefreshDialogs + simGetExplicitHandling + simSetExplicitHandling + simQuitSimulator + simGetExtensionString + simOpenTextEditor + simCreateBuffer + simReleaseBuffer + simModuleEntry + +
+ + +
+
+
+
+
+ + + + + + + + + + + + + + + + + diff --git a/c_transpiler/tests/test_assets/helpFiles/en/regularApi/simCloseScene.htm b/c_transpiler/tests/test_assets/helpFiles/en/regularApi/simCloseScene.htm new file mode 100644 index 0000000..957b703 --- /dev/null +++ b/c_transpiler/tests/test_assets/helpFiles/en/regularApi/simCloseScene.htm @@ -0,0 +1,82 @@ +
+ + + + + + + +
+

+ +

Regular API function

+

simCloseScene / + sim.closeScene

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Description + Closes current scene, and switches to another open scene. + If there is no other open scene, a new scene is then created. Can only be called + from an add-on, or from the sanbox script, when called + from Lua. See also sim.loadScene and sim.saveScene.
+ C/C++
synopsis +
int simCloseScene()
C/C++
parameters
+
+
+
+ C/C++
return value +
+
-1 if operation was not successful, otherwise the current scene index.
+
+
+ Lua
synopsis +
int result=sim.closeScene()
Lua
parameters
+
+
+
+ Lua
return values +
+
Similar to the C-function counterpart
+
+
Python
synopsis
int result=sim.closeScene()
+ +
+
+
diff --git a/c_transpiler/tests/test_assets/helpFiles/en/regularApi/simLoadScene.htm b/c_transpiler/tests/test_assets/helpFiles/en/regularApi/simLoadScene.htm new file mode 100644 index 0000000..992fd33 --- /dev/null +++ b/c_transpiler/tests/test_assets/helpFiles/en/regularApi/simLoadScene.htm @@ -0,0 +1,90 @@ +
+ + + + + + + +
+

+ +

Regular API function

+

simLoadScene / sim.loadScene +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Description + Loads a previously saved scene.See also sim.saveScene, sim.loadModel, simCloseScene and sim.setBoolParam with sim.boolparam_scene_and_model_load_messages. +
+ C/C++
synopsis +
int simLoadScene(const char* filename)
C/C++
parameters
+
filename: scene filename. The filename extension is required + (ttt, or simscene.xml ). By default, the current scene will be + removed. Append "@keepCurrent" to the filename if the current scene should be + preserved.
+
+
+ C/C++
return value +
+
-1 if operation was not successful
+
+
+ Lua
synopsis +
sim.loadScene(string/buffer filenameOrBuffer)
Lua
parameters
+
Similar to the C-function counterpart. Additionally, can also load from a + buffer
+
+ Lua
return values +
+
+
Python
synopsis
sim.loadScene(string/bytes filename)
+ +
+
+
diff --git a/c_transpiler/tests/test_assets/helpFiles/en/simIK.htm b/c_transpiler/tests/test_assets/helpFiles/en/simIK.htm new file mode 100755 index 0000000..0e3aa21 --- /dev/null +++ b/c_transpiler/tests/test_assets/helpFiles/en/simIK.htm @@ -0,0 +1,3371 @@ + + + + +simIK API + + + +
+ + + + + + + + + +

IK plugin API reference

API functions for creating kinematics tasks. All units, unless otherwise indicated, are specified in meters and radians.

+simIK.addElement
+simIK.addElementFromScene
+simIK.computeGroupJacobian
+simIK.computeJacobian
+simIK.createDebugOverlay
+simIK.createDummy
+simIK.createEnvironment
+simIK.createGroup
+simIK.createJoint
+simIK.doesGroupExist
+simIK.doesObjectExist
+simIK.duplicateEnvironment
+simIK.eraseDebugOverlay
+simIK.eraseEnvironment
+simIK.eraseObject
+simIK.generatePath
+simIK.findConfig
+simIK.getAlternateConfigs
+simIK.getElementBase
+simIK.getElementConstraints
+simIK.getElementFlags
+simIK.getElementPrecision
+simIK.getElementWeights
+simIK.getGroupCalculation
+simIK.getGroupFlags
+simIK.getGroupHandle
+simIK.getGroupJointLimitHits
+simIK.getGroupJoints
+simIK.getJointDependency
+simIK.getJointInterval
+simIK.getJointLimitMargin
+simIK.getJointMatrix
+simIK.getJointMaxStepSize
+simIK.getJointMode
+simIK.getJointPosition
+simIK.getJointScrewLead
+simIK.getJointTransformation
+simIK.getJointType
+simIK.getJointWeight
+simIK.getObjectHandle
+simIK.getObjectMatrix
+simIK.getObjectParent
+simIK.getObjectPose
+simIK.getObjects
+simIK.getObjectTransformation
+simIK.getObjectType
+simIK.getTargetDummy
+simIK.handleGroup
+simIK.handleGroups
+simIK.load
+simIK.save
+simIK.setElementBase
+simIK.setElementConstraints
+simIK.setElementFlags
+simIK.setElementPrecision
+simIK.setElementWeights
+simIK.setGroupCalculation
+simIK.setGroupFlags
+simIK.setJointDependency
+simIK.setJointInterval
+simIK.setJointLimitMargin
+simIK.setJointMaxStepSize
+simIK.setJointMode
+simIK.setJointPosition
+simIK.setJointScrewLead
+simIK.setJointWeight
+simIK.setObjectMatrix
+simIK.setObjectParent
+simIK.setObjectPose
+simIK.setObjectTransformation
+simIK.setSphericalJointMatrix
+simIK.setSphericalJointRotation
+simIK.setTargetDummy
+simIK.syncToSim
+simIK.syncFromSim
+
+ +

Environment functions and helpers

+
+simIK.createEnvironment
+simIK.eraseEnvironment
+simIK.duplicateEnvironment
+simIK.createDebugOverlay
+simIK.eraseDebugOverlay
+simIK.save
+simIK.load
+simIK.addElementFromScene
+simIK.syncToSim
+simIK.syncFromSim
+
+ + +

Objects

+
+simIK.getObjects
+simIK.getObjectHandle
+simIK.doesObjectExist
+simIK.eraseObject
+simIK.getObjectParent
+simIK.setObjectParent
+simIK.getObjectPose
+simIK.setObjectPose
+simIK.getObjectTransformation
+simIK.setObjectTransformation
+simIK.getObjectType
+simIK.getObjectMatrix
+simIK.setObjectMatrix
+
+ + +

Dummies

+
+simIK.createDummy
+simIK.eraseObject
+simIK.getTargetDummy
+simIK.setTargetDummy
+
+ + +

Joints

+
+simIK.createJoint
+simIK.eraseObject
+simIK.getJointPosition
+simIK.setJointPosition
+simIK.getJointMode
+simIK.setJointMode
+simIK.getJointInterval
+simIK.setJointInterval
+simIK.getJointDependency
+simIK.setJointDependency
+simIK.getJointWeight
+simIK.setJointWeight
+simIK.getJointLimitMargin
+simIK.setJointLimitMargin
+simIK.getJointMaxStepSize
+simIK.setJointMaxStepSize
+simIK.getJointScrewLead
+simIK.setJointScrewLead
+simIK.getJointTransformation
+simIK.setSphericalJointRotation
+simIK.getJointType
+simIK.getJointMatrix
+simIK.setSphericalJointMatrix
+simIK.getGroupJoints
+
+ + +

IK groups

+
+simIK.createGroup
+simIK.getGroupHandle
+simIK.doesGroupExist
+simIK.getGroupFlags
+simIK.setGroupFlags
+simIK.getGroupJointLimitHits
+simIK.getGroupJoints
+simIK.getGroupCalculation
+simIK.setGroupCalculation
+
+ + +

IK elements

+
+simIK.addElement
+simIK.addElementFromScene
+simIK.getElementFlags
+simIK.setElementFlags
+simIK.getElementConstraints
+simIK.setElementConstraints
+simIK.getElementBase
+simIK.setElementBase
+simIK.getElementPrecision
+simIK.setElementPrecision
+simIK.getElementWeights
+simIK.setElementWeights
+
+ + +

IK calculation

+
+simIK.handleGroup
+simIK.handleGroups
+simIK.findConfig
+simIK.getAlternateConfigs
+simIK.computeGroupJacobian
+simIK.computeJacobian
+simIK.generatePath
+simIK.syncToSim
+simIK.syncFromSim
+
+
+

+simIK.addElement

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionAdds a new IK element to an IK group.
Lua synopsisint elementHandle=simIK.addElement(int environmentHandle,int ikGroupHandle,int tipDummyHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
tipDummyHandle: the handle of the dummy object that should act as the tip in the IK element.
+
Lua return values
elementHandle: the IK element handle in the IK group
Python synopsisint elementHandle=simIK.addElement(int environmentHandle,int ikGroupHandle,int tipDummyHandle)
See alsosimIK.createEnvironment, simIK.getGroupHandle, simIK.getObjectHandle, simIK.addElementFromScene
+
+ +

+simIK.addElementFromScene

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionConvenience function to quickly generate an IK element from a kinematic chain in the scene
Lua synopsisint ikElement,map simToIkObjectMap,map ikToSimObjectMap=simIK.addElementFromScene(int environmentHandle,int ikGroup,int baseHandle,int tipHandle,int targetHandle,int constraints)
Lua arguments +
environmentHandle: the handle of the IK environment.
+
ikGroup: the handle of the IK group, where the IK element should be added.
+
baseHandle: the handle of the base object in the scene. Can be -1 if the base of the kinematic chain is not moving nor changing orientation.
+
tipHandle: the handle of the tip object in the scene.
+
targetHandle: the handle of the target object in the scene.
+
constraints: the constraints for the IK element that should be created. Bit-combine following: simIK.constraint_x, simIK.constraint_y, simIK.constraint_z, simIK.constraint_alpha_beta, simIK.constraint_gamma (simIK.constraint_gamma should only be set if simIK.constraint_alpha_beta is also set). For convenience we also have simIK.constraint_position=simIK.constraint_x|simIK.constraint_y|simIK.constraint_z, simIK.constraint_orientation=simIK.constraint_alpha_beta|simIK.constraint_gamma, and simIK.constraint_pose=simIK.constraint_position|simIK.constraint_orientation.
+
Lua return values +
ikElement: the handle of the created IK element
+
simToIkObjectMap: the mapping of scene objects to IK environment objects
+
ikToSimObjectMap: the mapping of IK environment objects to scene objects
+
Python synopsisint ikElement,list simToIkObjectMap,list ikToSimObjectMap=simIK.addElementFromScene(int environmentHandle,int ikGroup,int baseHandle,int tipHandle,int targetHandle,int constraints)
See alsosimIK.addElement
+
+ +

+simIK.applyIkEnvironmentToScene

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDeprecated. Use simIK.syncToSim.
Lua synopsisint result,int reason=simIK.applyIkEnvironmentToScene(int environmentHandle,int ikGroup,bool applyOnlyWhenSuccessful=false)
Lua arguments +
environmentHandle: the handle of the IK environment.
+
ikGroup: the handle of the IK group.
+
applyOnlyWhenSuccessful: whether computed values should only be applied if computation result is simIK.result_success.
+
Lua return values +
result: simIK.result_success if successfull
+
Python synopsisint result=simIK.applyIkEnvironmentToScene(int environmentHandle,int ikGroup,bool applyOnlyWhenSuccessful=False)
See also
+
+ +

+simIK.applySceneToIkEnvironment

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDeprecated. Use simIK.syncFromSim instead
Lua synopsissimIK.applySceneToIkEnvironment(int environmentHandle,int ikGroup)
Lua arguments +
environmentHandle: the handle of the IK environment.
+
ikGroup: the handle of the IK group.
+
Lua return values +
Python synopsissimIK.applySceneToIkEnvironment(int environmentHandle,int ikGroup)
See also
+
+ +

+simIK.computeGroupJacobian

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionComputes the Jacobian and error vector for an IK group
Lua synopsisfloat[] jacobian,float[] errorVector=simIK.computeGroupJacobian(int environmentHandle,int ikGroupHandle)
Lua arguments +
environmentHandle: the handle of the environment
+
ikGroupHandle: the handle of an IK group
+
Lua return values +
jacobian: the jacobian (row major order). Each row corresponds to one constraint in following order: x, y, z, alpha, beta, gamma. Each column corresponds to one joint, from base to tip
+
errorVector: the error vector between the target and the tip
+
Python synopsislist jacobian,list errorVector=simIK.computeGroupJacobian(int environmentHandle,int ikGroupHandle)
See alsosimIK.createEnvironment, simIK.handleGroup, simIK.computeJacobian
+
+ + + +

+simIK.computeJacobian

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionComputes the Jacobian and error vector for a kinematic chain
Lua synopsisfloat[] jacobian,float[] errorVector=simIK.computeJacobian(int environmentHandle,int baseObject,int lastJoint,int constraints,float[7..12] tipMatrix,float[7..12] targetMatrix=nil,float[7..12] constrBaseMatrix=nil)
Lua arguments +
environmentHandle: the handle of the environment.
+
baseObject: the handle of the base of the kinematic chain, or -1 for the world
+
lastJoint: the handle of the last joint in the kinematic chain, when going from base to tip
+
constraints: a combination of following is possible: simIK.constraint_x, simIK.constraint_y, simIK.constraint_z, simIK.constraint_alpha_beta, simIK.constraint_gamma. For convenience we also have simIK.constraint_position=simIK.constraint_x|simIK.constraint_y|simIK.constraint_z, simIK.constraint_orientation=simIK.constraint_alpha_beta|simIK.constraint_gamma, and simIK.constraint_pose=simIK.constraint_position|simIK.constraint_orientation
+
tipMatrix: the transformation matrix or pose of the tip object, relative to the world
+
targetMatrix: the transformation matrix or pose of the target object, relative to the world. Can be nil, in which case the targetPose is the same as the tipPose
+
constrMaseMatrix: the transformation matrix or pose that should serve as the reference frame for positional constraints, or nil to use baseHandle as reference frame
+
Lua return values +
jacobian: the jacobian (row major order). Each row corresponds to one constraint in following order: x, y, z, alpha, beta, gamma. Each column corresponds to one joint, from base to tip
+
errorVector: the error vector between the target and the tip
+
Python synopsislist jacobian,list errorVector=simIK.computeJacobian(int environmentHandle,int baseObject,int lastJoint,int constraints,list tipMatrix,list targetMatrix=None,list constrBaseMatrix=None)
See alsosimIK.createEnvironment, simIK.handleGroup, simIK.computeGroupJacobian
+
+ + + +

+simIK.createDebugOverlay

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionCreates a visual representation of an IK chain.
Lua synopsisint objectHandle=simIK.createDebugOverlay(int environmentHandle,int tipHandle,int baseHandle=-1)
Lua arguments +
environmentHandle: the handle of the environment.
+
tipHandle: the handle of the tip dummy.
+
baseHandle: the handle of the base object.
+
Lua return values +
objectHandle: the handle of the visual overlay object.
+
Python synopsisint objectHandle=simIK.createDebugOverlay(int environmentHandle,int tipHandle,int baseHandle=-1)
See alsosimIK.eraseDebugOverlay
+
+ + + +

+simIK.createDummy

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionCreates a dummy object.
Lua synopsisint dummyHandle=simIK.createDummy(int environmentHandle,string dummyName='')
Lua arguments +
environmentHandle: the handle of the environment.
+
dummyName: the name of the dummy.
+
Lua return values +
dummyHandle: the handle of the dummy.
+
Python synopsisint dummyHandle=simIK.createDummy(int environmentHandle,string dummyName='')
See alsosimIK.createEnvironment, simIK.doesObjectExist, simIK.createJoint, simIK.eraseObject
+
+ +

+simIK.createEnvironment

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionCreates an new IK environment.
Lua synopsisint environmentHandle=simIK.createEnvironment(int flags=0)
Lua arguments +
flags: reserved, keep at 0.
+
Lua return values +
environmentHandle: the handle of the newly created environment.
+
Python synopsisint environmentHandle=simIK.createEnvironment()
See alsosimIK.eraseEnvironment, simIK.load
+
+ +

+simIK.createGroup

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionCreates an IK group.
Lua synopsisint ikGroupHandle=simIK.createGroup(int environmentHandle,string ikGroupName='')
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupName: the name of the IK group.
+
Lua return values +
ikGroupHandle: the handle of the IK group.
+
Python synopsisint ikGroupHandle=simIK.createGroup(int environmentHandle,string ikGroupName='')
See alsosimIK.createEnvironment, simIK.doesGroupExist
+
+ +

+simIK.createJoint

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionCreates a joint object.
Lua synopsisint jointHandle=simIK.createJoint(int environmentHandle,string jointName='')
Lua arguments +
environmentHandle: the handle of the environment.
+
jointName: the name of the joint.
+
jointType: the type of the joint. Supported types are simIK.jointtype_revolute, simIK.jointtype_prismatic and simIK.jointtype_spherical.
+
Lua return values +
jointHandle: the handle of the joint.
+
Python synopsisint jointHandle=simIK.createJoint(int environmentHandle,string jointName='')
See alsosimIK.createEnvironment, simIK.doesObjectExist, simIK.createDummy, simIK.eraseObject
+
+ +

+simIK.doesObjectExist

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionChecks whether an object exists, based on its name.
Lua synopsisbool result=simIK.doesObjectExist(int environmentHandle,string objectName)
Lua arguments +
environmentHandle: the handle of the environment.
+
objectName: the name of the object.
+
Lua return values +
result: true if the object exists.
+
Python synopsisbool result=simIK.doesObjectExist(int environmentHandle,string objectName)
See alsosimIK.createEnvironment, simIK.getObjectHandle
+
+ +

+simIK.doesGroupExist

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionChecks whether an IK group exists, based on its name.
Lua synopsisbool result=simIK.doesGroupExist(int environmentHandle,string ikGroupName)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupName: the name of the IK group.
+
Lua return values +
result: true if the IK group exists.
+
Python synopsisbool result=simIK.doesGroupExist(int environmentHandle,string ikGroupName)
See alsosimIK.createEnvironment, simIK.getGroupHandle
+
+ +

+simIK.duplicateEnvironment

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDuplicates an IK environment. Useful when operating on an environment while leaving the original environment unchanged.
Lua synopsisint newEnvironmentHandle=simIK.duplicateEnvironment(int environmentHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
Lua return values +
newEnvironmentHandle: the handle of the duplicated environment.
+
Python synopsisint newEnvironmentHandle=simIK.duplicateEnvironment(int environmentHandle)
See alsosimIK.eraseEnvironment, simIK.createEnvironment
+
+ + + + +

+simIK.eraseDebugOverlay

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRemoves the visual representation of an IK chain.
Lua synopsissimIK.eraseDebugOverlay(int objectHandle)
Lua arguments +
objectHandle: the handle of the visual overlay object.
+
Lua return values +
Python synopsissimIK.eraseDebugOverlay(int objectHandle)
See alsosimIK.createDebugOverlay
+
+ + + +

+simIK.eraseEnvironment

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionErases an IK environment.
Lua synopsissimIK.eraseEnvironment(int environmentHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
Lua return values +
Python synopsissimIK.eraseEnvironment(int environmentHandle)
See alsosimIK.createEnvironment
+
+ +

+simIK.eraseObject

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionErases an object.
Lua synopsissimIK.eraseObject(int environmentHandle,int objectHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
objectHandle: handle of the object.
+
Lua return values +
Python synopsissimIK.eraseObject(int environmentHandle,int objectHandle)
See alsosimIK.createEnvironment, simIK.getObjectHandle, simIK.createDummy, simIK.createJoint
+
+ +

+simIK.findConfig

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSearches for a manipulator configuration that matches the target dummy/dummies position/orientation in space. Search is randomized. One should call simIK.getAlternateConfigs for each returned configuration, if some revolute joints of the manipulator have a range of more than 360 degrees, in order to generate some equivalent poses but alternate configurations. The IK environment remains unchanged.
Lua synopsisfloat[] jointPositions=simIK.findConfig(int environmentHandle,int ikGroupHandle,int[] jointHandles,float thresholdDist=0.1,float maxTime=0.5,float[4] metric={1,1,1,0.1},func/string validationCallback=nil,auxData=nil)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
jointHandles: a table that specifies the joint handles for the joints we wish to retrieve the values calculated by the IK.
+
thresholdDist: a distance indicating when IK should be computed in order to try to bring the tip onto the target: since the search algorithm proceeds by generating random configurations, many of them produce a tip pose that is too far from the target pose to run IK successfully. Choosing a large value will result in slow calculations, choosing a small value might produce a smaller subset of solutions. Distance between two poses is calculated using a metric (see metric argument below).
+
maxTime: the upper time limit, in seconds, after which the function returns.
+
metric: a table to 4 values indicating a metric used to compute pose-pose distances: distance=sqrt((dx*metric[1])^2+(dy*metric[2])^2+(dz*metric[3])^2+(angle*metric[4])^2).
+
validationCallback: an optional callback function expressed as a function or a string. The callback function takes as input arguments the proposed joint values (i.e. a configuration) and auxData, and as return value whether the configuration is valid (e.g. is not colliding).
+
auxData: auxiliary data that will be handed to the validation callback.
+
Lua return values +
jointPositions: a table that contains the IK calculated joint values, as specified by the jointHandles table, if a valid configuration was found.
+
Python synopsislist jointPositions=simIK.findConfig(int environmentHandle,int ikGroupHandle,list jointHandles,float thresholdDist=0.1,float maxTime=0.5,list metric=[1,1,1,0.1],function/string validationCallback=None,auxData=None)
See alsosimIK.createEnvironment, simIK.duplicateEnvironment, simIK.getAlternateConfigs, simIK.computeJacobian
+
+ + +

+simIK.generatePath

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionGenerates a path that drives the IK tip onto its IK target, in a straight line (i.e. shortest path in Cartesian space). The function returns a path in the configuration space if the operation was successful. A reason for a non-successful operation can be: there are some forbidden poses/configurations on the way, or some of the configuration points cannot be reached (e.g. out of reach, or due to joint limits). The IK environment remains unchanged.
Lua synopsisfloat[] configurationList=simIK.generatePath(int environmentHandle,int ikGroupHandle,int[] jointHandles,int tipHandle,int pathPointCount,function/string validationCallback=nil,auxData=nil
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the IK group handle.
+
jointHandles: a table that specifies the joint handles for the joints we wish to retrieve the values calculated by the IK.
+
tipHandle: the handle of the tip object.
+
pathPointCount: the desired number of path points. Each path point contains a joint configuration. A minimum of two path points is required.
+
validationCallback: an optional callback function, expressed as a function or string. The callback function takes as input arguments proposed joint values (i.e. a configuration) and auxData, and as return value whether the configuration is valid (e.g. is not colliding).
+
auxData: auxiliary data that will be handed to the validation callback.
+
Lua return values +
configurationList: a table that contains configurations (in row-major order) that will bring the IK tip onto its IK target.
+
Python synopsislist configurationList=simIK.generatePath(int environmentHandle,int ikGroupHandle,list jointHandles,int tipHandle,int pathPointCount,function/string validationCallback=None,auxData=None
See alsosimIK.duplicateEnvironment
+
+ +

+simIK.getAlternateConfigs

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionUseful when called after simIK.findConfig: generates alternative manipulator configurations, for a same end-effector pose, for a manipulator that has revolute joints with a range larger than 360 degrees. The original submitted configuration will be part of the returned configurations. The IK environment remains unchanged.
Lua synopsisfloat[] configurations=simIK.getAlternateConfigs(int environmentHandle,int[] jointHandles,float[] lowLimits=nil,float[] ranges=nil)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandles: a table with the handles of the manipulator joints.
+
lowLimits: a table with joint low limit values for each specified joint. This can be useful when you wish to explore a sub-set of the joint's intervals.
+
ranges: a table with joint range values for each specified joint. This can be useful when you wish to explore a sub-set of the joint's intervals. If the range value is 0, then the lowLimit and range values are taken from the joint's properties. If the range value is negative, then the search interval will be centered around the current linear/angular joint position, with an extent of (-range).
+
Lua return values +
configurations: a table containing configurations (in row-major order) that are equivalent to the specified inputConfig, in terms of end-effector pose.
+
Python synopsislist configurations=simIK.getAlternateConfigs(int environmentHandle,list jointHandles,list lowLimits=None,list ranges=None)
See alsosimIK.createEnvironment, simIK.findConfig
+
+ +

+simIK.getConfigForTipPose

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDeprecated. Use simIK.findConfig instead.
Lua synopsisfloat[] jointPositions=simIK.getConfigForTipPose(int environmentHandle,int ikGroupHandle,int[] jointHandles,float thresholdDist=0.1,float maxTime=0.5,float[4] metric={1,1,1,0.1},function validationCallback=nil,auxData=nil,int[] jointOptions={},float[] lowLimits={},float[] ranges={})
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
jointHandles: a table that specifies the joint handles for the joints we wish to retrieve the values calculated by the IK.
+
thresholdDist: a distance indicating when IK should be computed in order to try to bring the tip onto the target: since the search algorithm proceeds by generating random configurations, many of them produce a tip pose that is too far from the target pose to run IK successfully. Choosing a large value will result in slow calculations, choosing a small value might produce a smaller subset of solutions. Distance between two poses is calculated using a metric (see metric argument below).
+
maxTime: the upper time limit, in seconds, after which the function returns.
+
metric: a table to 4 values indicating a metric used to compute pose-pose distances: distance=sqrt((dx*metric[1])^2+(dy*metric[2])^2+(dz*metric[3])^2+(angle*metric[4])^2).
+
validationCallback: an optional callback function. The callback function takes as input arguments the proposed joint values (i.e. a configuration) and auxData, and as return value whether the configuration is valid (e.g. is not colliding).
+
auxData: auxiliary data that will be handed to the validation callback.
+
jointOptions: a table with bit-coded values corresponding to each specified joint handle. Bit 0 (i.e. 1) indicates the corresponding joint is dependent of another joint.
+
lowLimits: a table with joint low limit values for each specified joint. This can be useful when you wish to explore a sub-set of the joint's intervals.
+
ranges: a table with joint range values for each specified joint. This can be useful when you wish to explore a sub-set of the joint's intervals. If the range value is 0, then the lowLimit and range values are taken from the joint's properties. If the range value is negative, then the search interval will be centered around the current linear/angular joint position, with an extent of (-range).
+
Lua return values +
jointPositions: a table that contains the IK calculated joint values, as specified by the jointHandles table, if a valid configuration was found.
+
Python synopsislist jointPositions=simIK.getConfigForTipPose(int environmentHandle,int ikGroupHandle,list jointHandles,float thresholdDist=0.1,float maxTime=0.5,list metric=[1,1,1,0.1],function validationCallback=None,auxData=None,list jointOptions=[],list lowLimits=[],list ranges=[])
See alsosimIK.createEnvironment, simIK.duplicateEnvironment, simIK.getAlternateConfigs, simIK.computeJacobian
+
+ +

+simIK.getElementBase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the base object of an IK element.
Lua synopsisint baseHandle,int constraintsBaseHandle=simIK.getElementBase(int environmentHandle,int ikGroupHandle,int elementHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
elementHandle: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).
+
Lua return values +
baseHandle: the handle of the base object, or -1 if the world is the base.
+
constraintsBaseHandle: the handle of the constraints base object, relative to which the constraints are specified. Returns -1 if the constraints are relative to the base object.
+
Python synopsisint baseHandle,int constraintsBaseHandle=simIK.getElementBase(int environmentHandle,int ikGroupHandle,int elementHandle)
See alsosimIK.createEnvironment, simIK.setElementBase, simIK.getGroupHandle, simIK.getObjectHandle
+
+ +

+simIK.getElementConstraints

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the constraints of an IK element.
Lua synopsisint constraints=simIK.getElementConstraints(int environmentHandle,int ikGroupHandle,int elementHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
elementHandle: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).
+
Lua return values +
constraints: the constraints. A bit-combination of following is possible: simIK.constraint_x, simIK.constraint_y, simIK.constraint_z, simIK.constraint_alpha_beta, simIK.constraint_gamma.
+
Python synopsisint constraints=simIK.getElementConstraints(int environmentHandle,int ikGroupHandle,int elementHandle)
See alsosimIK.createEnvironment, simIK.setElementConstraints, simIK.getGroupHandle, simIK.getObjectHandle
+
+ +

+simIK.getElementFlags

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves various flags of an IK element.
Lua synopsisint flags=simIK.getElementFlags(int environmentHandle,int ikGroupHandle,int elementHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
elementHandle: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).
+
Lua return values +
flags: bit-coded flags: bit0 set(1)=the enabled state of the ik element.
+
Python synopsisint flags=simIK.getElementFlags(int environmentHandle,int ikGroupHandle,int elementHandle)
See alsosimIK.createEnvironment, simIK.setElementFlags, simIK.getGroupHandle, simIK.getObjectHandle
+
+ +

+simIK.getElementPrecision

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the precision settings of an IK element.
Lua synopsisfloat[2] precision=simIK.getElementPrecision(int environmentHandle,int ikGroupHandle,int elementHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
elementHandle: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).
+
Lua return values +
precision: a table with the linear and angular precision.
+
Python synopsislist precision=simIK.getElementPrecision(int environmentHandle,int ikGroupHandle,int elementHandle)
See alsosimIK.createEnvironment, simIK.setElementPrecision, simIK.getGroupHandle, simIK.getObjectHandle
+
+ +

+simIK.getElementWeights

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the desired linear and angular resolution weights of an IK element.
Lua synopsisfloat[3] weights=simIK.getElementWeights(int environmentHandle,int ikGroupHandle,int elementHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
elementHandle: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).
+
Lua return values +
weights: a table with the linear, angular and overall resolution weights.
+
Python synopsislist weights=simIK.getElementWeights(int environmentHandle,int ikGroupHandle,int elementHandle)
See alsosimIK.createEnvironment, simIK.setElementWeights, simIK.getGroupHandle, simIK.getObjectHandle
+
+ +

+simIK.getGroupCalculation

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves calculation properties for an IK group.
Lua synopsisint method,float damping,int maxIterations=simIK.getGroupCalculation(int environmentHandle,int ikGroupHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
Lua return values +
method: the resolution method. Possible values are simIK.method_pseudo_inverse (features a tiny bit of hard-coded damping), simIK.method_undamped_pseudo_inverse, simIK.method_damped_least_squares and simIK.method_jacobian_transpose.
+
damping: the damping, in case the resolution method is simIK.method_damped_least_squares.
+
maxIterations: the maximum number of iterations.
+
Python synopsisint method,float damping,int maxIterations=simIK.getGroupCalculation(int environmentHandle,int ikGroupHandle)
See alsosimIK.createEnvironment, simIK.setGroupCalculation, simIK.getGroupHandle
+
+ +

+simIK.getGroupFlags

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves flags of an IK group.
Lua synopsisint flags=simIK.getGroupFlags(int environmentHandle,int ikGroupHandle))
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
Lua return values +
flags: the flags of the IK group, bit-coded:
+
simIK.group_enabled: the group's enabled state
+
simIK.group_ignoremaxsteps: the joints' max step sizes are ignored. Otherwise, when detected, an interpolation factor (originally at 1.0) is successively divided by 2.0 until the max. step sizes are respected
+
simIK.group_restoreonbadlintol: the IK world state is left untouched if the linear precision is not reached
+
simIK.group_restoreonbadangtol: the IK world state is left untouched if the angular precision is not reached
+
simIK.group_avoidlimits: joint limits are actively avoided
+
simIK.group_stoponlimithit: calculation ends when a joint limit is hit
+
Python synopsisint flags=simIK.getGroupFlags(int environmentHandle,int ikGroupHandle))
See alsosimIK.createEnvironment, simIK.setGroupFlags, simIK.getGroupHandle
+
+ +

+simIK.getGroupHandle

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the handle of an IK group based on its name.
Lua synopsisint ikGroupHandle=simIK.getGroupHandle(int environmentHandle,string ikGroupName)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupName: the name of the IK group.
+
Lua return values +
ikGroupHandle: the handle of the IK group.
+
Python synopsisint ikGroupHandle=simIK.getGroupHandle(int environmentHandle,string ikGroupName)
See alsosimIK.createEnvironment, simIK.doesGroupExist, simIK.createGroup
+
+ +

+simIK.getGroupJointLimitHits

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionChecks which joints of an IK group hit a limit last time that IK group was handled
Lua synopsisint[] jointHandles,float[] underOrOvershots=simIK.getGroupJointLimitHits(int environmentHandle,int ikGroupHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
Lua return values +
jointHandles: the joint handles that that had joint limits under- or overshot
+
underOrOvershots: the corresponding under- or overshots, for each of the jointHandles
+
Python synopsislist jointHandles,list underOrOvershots=simIK.getGroupJointLimitHits(int environmentHandle,int ikGroupHandle)
See alsosimIK.setGroupFlags
+
+ + +

+simIK.getGroupJoints

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionReturns the joint handles involved in the IK group calculation, i.e. one handle per Jacobian column (except with revolute joints that have 3 corresponding Jacobian columns)
Lua synopsisint[] jointHandles=simIK.getGroupJoints(int environmentHandle,int ikGroupHandle)
Lua arguments +
environmentHandle: the handle of the environment
+
ikGroupHandle: the handle of the IK group
+
Lua return values +
jointHandles: the joint handles
+
Python synopsislist jointHandles=simIK.getGroupJoints(int environmentHandle,int ikGroupHandle)
See also
+
+ + + + + +

+simIK.getJointDependency

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves information about a possible joint dependency.
Lua synopsisint depJointHandle,float offset,float mult=simIK.getJointDependency(int environmentHandle,int jointHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
Lua return values +
depJointHandle: the handle of the dependency joint.
+
offset: the offset. We have linear/angular joint position = dependency linear/angular joint position * mult + offset.
+
mult: the multiplication factor. We have linear/angular joint position = dependency linear/angular joint position * mult + offset.
+
Python synopsisint depJointHandle,float offset,float mult=simIK.getJointDependency(int environmentHandle,int jointHandle)
See alsosimIK.createEnvironment, simIK.setJointDependency, simIK.getObjectHandle
+
+ +

+simIK.getJointWeight

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the IK weight of a joint, i.e. the weight it has during IK resolution.
Lua synopsisfloat weight=simIK.getJointWeight(int environmentHandle,int jointHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
Lua return values +
weight: the IK weight.
+
Python synopsisfloat weight=simIK.getJointWeight(int environmentHandle,int jointHandle)
See alsosimIK.createEnvironment, simIK.setJointWeight, simIK.getObjectHandle
+
+ +

+simIK.getJointInterval

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the joint limits.
Lua synopsisbool cyclic,float[2] interval=simIK.getJointInterval(int environmentHandle,int jointHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
Lua return values +
cyclic: whether the joint is cyclic (has no limits).
+
interval: a table with two values: the joint lower limit, and the joint range (i.e. joint upper limit = joint lower limit + joint range)
+
Python synopsisbool cyclic,list interval=simIK.getJointInterval(int environmentHandle,int jointHandle)
See alsosimIK.createEnvironment, simIK.setJointInterval, simIK.getObjectHandle
+
+ +

+simIK.getJointLimitMargin

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the limit margin of a joint, i.e. the threshold that will be used to counteract on joint limit violation during IK resolution, if the appropriate IK group flag was set
Lua synopsisfloat margin=simIK.getJointLimitMargin(int environmentHandle,int jointHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
Lua return values +
margin: the margin
+
Python synopsisfloat margin=simIK.getJointLimitMargin(int environmentHandle,int jointHandle)
See alsosimIK.createEnvironment, simIK.setJointLimitMargin, simIK.getGroupFlags
+
+ +

+simIK.getJointMatrix

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the intrinsic transformation matrix of a joint.
Lua synopsisfloat[12] matrix=simIK.getJointMatrix(int environmentHandle,int jointHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
Lua return values +
matrix: a table of 12 numbers representing the transformation matrix (the last row of the 4x4 matrix (0,0,0,1) is not returned).
+
Python synopsislist matrix=simIK.getJointMatrix(int environmentHandle,int jointHandle)
See alsosimIK.createEnvironment, simIK.setSphericalJointMatrix, simIK.getJointPosition, simIK.getJointTransformation, simIK.getObjectHandle
+
+ +

+simIK.getJointMaxStepSize

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the maximum step size of a joint.
Lua synopsisfloat stepSize=simIK.getJointMaxStepSize(int environmentHandle,int jointHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
Lua return values +
stepSize: the maximum step size.
+
Python synopsisfloat stepSize=simIK.getJointMaxStepSize(int environmentHandle,int jointHandle)
See alsosimIK.createEnvironment, simIK.setJointMaxStepSize, simIK.getObjectHandle
+
+ +

+simIK.getJointMode

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the joint mode.
Lua synopsisint jointMode=simIK.getJointMode(int environmentHandle,int jointHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
Lua return values +
jointMode: the joint mode. Possible values are: simIK.jointmode_passive, simIK.jointmode_ik
+
Python synopsisint jointMode=simIK.getJointMode(int environmentHandle,int jointHandle)
See alsosimIK.createEnvironment, simIK.setJointMode, simIK.getObjectHandle
+
+ +

+simIK.getJointPosition

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the position (linear or angular) of a joint.
Lua synopsisfloat position=simIK.getJointPosition(int environmentHandle,int jointHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
Lua return values +
position: the position.
+
Python synopsisfloat position=simIK.getJointPosition(int environmentHandle,int jointHandle)
See alsosimIK.createEnvironment, simIK.setJointPosition, simIK.getJointMatrix, simIK.getJointTransformation, simIK.getObjectHandle
+
+ +

+simIK.getJointScrewLead

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the screw lead of a revolute joint.
Lua synopsisfloat lead=simIK.getJointScrewLead(int environmentHandle,int jointHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
Lua return values +
lead: the screw lead of the joint. A lead value of zero represents a revolute joint, a value different from zero represents a screw.
+
Python synopsisfloat lead=simIK.getJointScrewLead(int environmentHandle,int jointHandle)
See alsosimIK.createEnvironment, simIK.setJointScrewLead, simIK.getObjectHandle
+
+ +

+simIK.getJointTransformation

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the intrinsic transformation of a joint.
Lua synopsisfloat[3] position,float[4] quaternion,float[3] euler=simIK.getJointTransformation(int environmentHandle,int jointHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
Lua return values +
position: the translation of the joint.
+
quaternion: the rotation of the joint, expressed as quaternion (x,y,z,w).
+
euler: the rotation of the joint, expressed as Euler angles (alpha,beta,gamma).
+
Python synopsislist position,list quaternion,list euler=simIK.getJointTransformation(int environmentHandle,int jointHandle)
See alsosimIK.createEnvironment, simIK.setSphericalJointRotation, simIK.getJointPosition, simIK.getJointMatrix, simIK.getObjectHandle
+
+ +

+simIK.getJointType

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the joint type.
Lua synopsisint jointType=simIK.getJointType(int environmentHandle,int jointHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
Lua return values +
jointType: the joint type. Possible values are: simIK.jointtype_revolute, simIK.jointtype_prismatic and simIK.jointtype_spherical
+
Python synopsisint jointType=simIK.getJointType(int environmentHandle,int jointHandle)
See alsosimIK.createJoint
+
+ +

+simIK.getLinkedDummy

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDeprecated. Use simIK.getTargetDummy instead
Lua synopsisint linkedDummyHandle=simIK.getLinkedDummy(int environmentHandle,int dummyHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
dummyHandle: the handle of the dummy object.
+
Lua return values +
linkedDummyHandle: the handle of the linked dummy object. Is -1 if no dummy object is linked to this one.
+
Python synopsisint linkedDummyHandle=simIK.getLinkedDummy(int environmentHandle,int dummyHandle)
See alsosimIK.createEnvironment, simIK.setLinkedDummy, simIK.getObjectHandle
+
+ +

+simIK.getObjectHandle

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the handle of an object based on its name.
Lua synopsisint objectHandle=simIK.getObjectHandle(int environmentHandle,string objectName)
Lua arguments +
environmentHandle: the handle of the environment.
+
objectName: the name of the object.
+
Lua return values +
objectHandle: the object handle.
+
Python synopsisint objectHandle=simIK.getObjectHandle(int environmentHandle,string objectName)
See alsosimIK.createEnvironment, simIK.doesObjectExist, simIK.createDummy, simIK.createJoint
+
+ +

+simIK.getObjectMatrix

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the transformation matrix of an object. If the object is a joint object, the matrix does not include the joint's intrinsic transformation.
Lua synopsisfloat[12] matrix=simIK.getObjectMatrix(int environmentHandle,int objectHandle,int relativeToObjectHandle=simIK.handle_world)
Lua arguments +
environmentHandle: the handle of the environment.
+
objectHandle: the handle of the object.
+
relativeToObjectHandle: the handle of an object relative to which we want the matrix expressed. Otherwise, specify simIK.handle_world if you want the absolute matrix, or simIK.handle_parent if you want the matrix relative to the parent object.
+
Lua return values +
matrix: a table of 12 numbers representing the transformation matrix (the last row of the 4x4 matrix (0,0,0,1) is not returned)
+
Python synopsislist matrix=simIK.getObjectMatrix(int environmentHandle,int objectHandle,int relativeToObjectHandle=simIK.handle_world)
See alsosimIK.createEnvironment, simIK.setObjectMatrix, simIK.getObjectPose,simIK.getObjectTransformation, simIK.getJointTransformation, simIK.getObjectHandle
+
+ +

+simIK.getObjectParent

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves an object's parent handle.
Lua synopsisint parentObjectHandle=simIK.getObjectParent(int environmentHandle,int objectHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
objectHandle: the handle of the object.
+
Lua return values +
parentObjectHandle: the returned handle of the parent, or -1 if the object has no parent.
+
Python synopsisint parentObjectHandle=simIK.getObjectParent(int environmentHandle,int objectHandle)
See alsosimIK.createEnvironment, simIK.setObjectParent, simIK.getObjectHandle
+
+ + +

+simIK.getObjectPose

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the pose (position and quaternion) of an object. If the object is a joint object, the pose does not include the joint's intrinsic transformation.
Lua synopsisfloat[7] pose=simIK.getObjectPose(int environmentHandle,int objectHandle,int relativeToObjectHandle=simIK.handle_world)
Lua arguments +
environmentHandle: the handle of the environment.
+
objectHandle: the handle of the object.
+
relativeToObjectHandle: the handle of an object relative to which we want the pose expressed. Otherwise, specify simIK.handle_world if you want the absolute pose, or simIK.handle_parent if you want the pose relative to the parent object.
+
Lua return values +
pose: the position and quaternion of the object (x,y,z,qx,qy,qz,qw).
+
Python synopsislist pose=simIK.getObjectPose(int environmentHandle,int objectHandle,int relativeToObjectHandle=simIK.handle_world)
See alsosimIK.createEnvironment, simIK.setObjectPose, simIK.getObjectTransformation, simIK.getObjectMatrix, simIK.getJointTransformation, simIK.getObjectHandle
+
+ + + +

+simIK.getObjects

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionAllows to loop through all objects in the environment.
Lua synopsisint objectHandle,string objectName,bool isJoint,int jointType=simIK.getObjects(int environmentHandle,int index)
Lua arguments +
environmentHandle: the handle of the environment.
+
index: the zero-based index. Start at 0, and increment until there is no return values anymore, in order to loop through all objects in the environment.
+
Lua return values +
objectHandle: the handle of the object, or nil if there is no object at the specified index.
+
objectName: the name of the object.
+
isJoint: whether the object is a joint.
+
jointType: the type of joint, if the object at the specified index is a joint. Possible values are simIK.jointtype_revolute, simIK.jointtype_prismatic or simIK.jointtype_spherical.
+
Python synopsisint objectHandle,string objectName,bool isJoint,int jointType=simIK.getObjects(int environmentHandle,int index)
See alsosimIK.getObjectHandle, simIK.doesObjectExist
+
+ +

+simIK.getObjectTransformation

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the transformation (position and quaternion/euler angles) of an object. If the object is a joint object, the transformation does not include the joint's intrinsic transformation.
Lua synopsisfloat[3] position,float[4] quaternion,float[3] euler=simIK.getObjectTransformation(int environmentHandle,int objectHandle,int relativeToObjectHandle=simIK.handle_world)
Lua arguments +
environmentHandle: the handle of the environment.
+
objectHandle: the handle of the object.
+
relativeToObjectHandle: the handle of an object relative to which we want the transformation expressed. Otherwise, specify simIK.handle_world if you want the absolute transformation, or simIK.handle_parent if you want the transformation relative to the parent object.
+
Lua return values +
position: the position of the object.
+
quaternion: the orientation of the object, expressed as quaternion (x,y,z,w).
+
euler: the orientation of the object, expressed as Euler angles (alpha,beta,gamma).
+
Python synopsislist position,list quaternion,list euler=simIK.getObjectTransformation(int environmentHandle,int objectHandle,int relativeToObjectHandle=simIK.handle_world)
See alsosimIK.createEnvironment, simIK.setObjectTransformation, simIK.getObjectPose, simIK.getObjectMatrix, simIK.getJointTransformation, simIK.getObjectHandle
+
+ + + +

+simIK.getObjectType

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the type of an object.
Lua synopsisint objectType=simIK.getObjectType(int environmentHandle,int objectHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
objectHandle: the handle of the object.
+
Lua return values +
objectType: the returned type of the object.
+
Python synopsisint objectType=simIK.getObjectType(int environmentHandle,int objectHandle)
See also
+
+ + +

+simIK.getTargetDummy

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionRetrieves the handle of the target dummy associated with a tip dummy
Lua synopsisint targetDummyHandle=simIK.getTargetDummy(int environmentHandle,int tipDummyHandle)
Lua arguments +
environmentHandle: the handle of the environment
+
tipDummyHandle: the handle of the tip dummy
+
Lua return values +
targetDummyHandle: the handle of the target dummy. Is -1 if no target dummy is associated with the tip dummy
+
Python synopsisint targetDummyHandle=simIK.getTargetDummy(int environmentHandle,int tipDummyHandle)
See alsosimIK.createEnvironment, simIK.setTargetDummy, simIK.getObjectHandle
+
+ + + +

+simIK.handleGroup

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionHandles (i.e. computes/resolves) an IK group. Convenience function for simIK.handleIkGroups(ikEnv,{ikGroupHandle},..)
Lua synopsisint result,int flags,float[2] precision=simIK.handleGroup(int environmentHandle,int ikGroupHandle,map options={})
Lua arguments +
environmentHandle: the handle of the environment
+
ikGroupHandle: the handle of the IK group
+
options: options:
+
options.syncWorlds: if true, then calculation will be preceeded by simIK.syncFromSim and followed by simIK.syncToSim
+
options.allowError: if true, and options.syncWorlds is true too, then calculation result will be applied to the scene, even if tip/target pairs are not within tolerance
+
options.debug: bit0 is set, then a visual representation of the IK group will be made
+
options.callback: a callback function that allows to inspect and manipulate the Jacobian. It also allows to directly perform joint valiation calculations while skipping internal computations:
+
outData=callbackFunction(inData)
+
inData.jacobian: a Matrix object representing the Jacobian
+
inData.e: a Vector object representing the error vector
+
inData.rows: a table describing the jacobian rows
+
inData.cols: a table describing the jacobian cols
+
+
outData.jacobian: an optional Matrix object representing the Jacobian to use in subsequent calculations. If not provided, then the original inData.jacobian is used
+
outData.e: an optional Vector object representing the error vector to use in subsequent calculations. If not provided, then the original inData.e is used
+
outData.dq: an optional Vector object representing the joint variation to apply. If provided, then internal Jacobian calculations (i.e. Jacobian pseudo-inverse) will be skipped)
+
outData.jacobianPinv: an optional Matrix object representing the jacobian pseudo-inverse. If provided (and dq is not provided), then internal Jacobian calculations will be skipped and following executed instead: dq=outData.jacobianPinv*e)
+ +
Lua return values +
result: simIK.result_success, if successful
+
reason: bit-coded flags: simIK.calc_notperformed, simIK.calc_cannotinvert, simIK.calc_notwithintolerance, simIK.calc_stepstoobig, simIK.calc_limithit
+
precision: 2 values indicating the largest linear and angular distance between all tip-target pairs
+
Python synopsisint result,int flags,list precision=simIK.handleGroup(int environmentHandle,int ikGroupHandle,map options=None)
See alsosimIK.handleGroups,simIK.createEnvironment, simIK.computeJacobian, simIK.findConfig
+
+ + + + + + + + + + + +

+simIK.handleGroups

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionHandles (i.e. computes/resolves) one or several IK groups
Lua synopsisint result,int flags,float[2] precision=simIK.handleGroups(int environmentHandle,int[] ikGroupHandles,map options={})
Lua arguments +
environmentHandle: the handle of the environment
+
ikGroupHandles: the handles of the IK groups. If one handle is specified, then a simple IK calculation is performed. If more than one handle is specified, then a projected IK computation is performed, where each group calculation result is projected into the previous group's null space, i.e. dq=dq0+NP0*(dq1+NP1*(dq2+NP2*(...))), where dqi is the result of i-th task's IK (i.e. typically J#*e), and NPi is the i-th task's I-J#*J
+
options: options:
+
options.syncWorlds: if true, then calculation will be preceeded by simIK.syncFromSim and followed by simIK.syncToSim
+
options.allowError: if true, and options.syncWorlds is true too, then calculation result will be applied to the scene, even if tip/target pairs are not within tolerance
+
options.debug: if bit0 is set, then a visual representation of the IK groups will be made
+
options.callback: a callback function that allows to inspect and manipulate the Jacobian. It also allows to directly perform joint valiation calculations while skipping internal computations:
+
outData=callbackFunction(inData)
+
inData.jacobian: a Matrix object representing the Jacobian
+
inData.e: a Vector object representing the error vector
+
inData.rows: a table describing the jacobian rows
+
inData.cols: a table describing the jacobian cols
+
+
outData.jacobian: an optional Matrix object representing the Jacobian to use in subsequent calculations. If not provided, then the original inData.jacobian is used
+
outData.e: an optional Vector object representing the error vector to use in subsequent calculations. If not provided, then the original inData.e is used
+
outData.dq: an optional Vector object representing the joint variation to apply. If provided, then internal Jacobian calculations (i.e. Jacobian pseudo-inverse) will be skipped)
+
outData.jacobianPinv: an optional Matrix object representing the jacobian pseudo-inverse. If provided (and dq is not provided), then internal Jacobian calculations will be skipped and following executed instead: dq=outData.jacobianPinv*e)
+ +
Lua return values +
result: simIK.result_success, if successful
+
reason: bit-coded flags: simIK.calc_notperformed, simIK.calc_cannotinvert, simIK.calc_notwithintolerance, simIK.calc_stepstoobig, simIK.calc_limithit
+
precision: 2 values indicating the largest linear and angular distance between all tip-target pairs
+
Python synopsisint result,int flags,list precision=simIK.handleGroups(int environmentHandle,int[] ikGroupHandles,map options=None)
See alsosimIK.handleGroup,simIK.createEnvironment, simIK.computeJacobian, simIK.findConfig
+
+ + + + + + + + + + + +

+simIK.load

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionLoads kinematic content previously exported in the CoppeliaSim application. Make sure that the environment is empty before calling this function.
Lua synopsissimIK.load(int environmentHandle,buffer data)
Lua arguments +
environmentHandle: the handle of the environment.
+
data: a buffer with the kinematic content.
+
Lua return values +
Python synopsissimIK.load(int environmentHandle,bytes data)
See alsosimIK.save, simIK.createEnvironment, simIK.eraseEnvironment
+
+ +

+simIK.save

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSaves the kinematic content of an IK environment.
Lua synopsisbuffer data=simIK.save(int environmentHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
Lua return values +
data: the exported data.
+
Python synopsisbytes data=simIK.save(int environmentHandle)
See alsosimIK.load
+
+ +

+simIK.setElementBase

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the base object of an IK element.
Lua synopsissimIK.setElementBase(int environmentHandle,int ikGroupHandle,int elementHandle,int baseHandle,int constraintsBaseHandle=-1)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
elementHandle: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).
+
baseHandle: the handle of the base object, or -1 if the world is the base.
+
constraintsBaseHandle: the handle of the constraints base object, relative to which the constraints are specified. Set to -1 to have the constraints relative to the base object.
+
Lua return values +
Python synopsissimIK.setElementBase(int environmentHandle,int ikGroupHandle,int elementHandle,int baseHandle,int constraintsBaseHandle=-1)
See alsosimIK.createEnvironment, simIK.getElementBase, simIK.getGroupHandle, simIK.getObjectHandle
+
+ +

+simIK.setElementConstraints

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the constraints of an IK element.
Lua synopsissimIK.setElementConstraints(int environmentHandle,int ikGroupHandle,int elementHandle,int constraints)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
elementHandle: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).
+
constraints: the constraints. Bit-combine following: simIK.constraint_x, simIK.constraint_y, simIK.constraint_z, simIK.constraint_alpha_beta, simIK.constraint_gamma (simIK.constraint_gamma should only be set if simIK.constraint_alpha_beta is also set). For convenience we also have simIK.constraint_position=simIK.constraint_x|simIK.constraint_y|simIK.constraint_z, simIK.constraint_orientation=simIK.constraint_alpha_beta|simIK.constraint_gamma, and simIK.constraint_pose=simIK.constraint_position|simIK.constraint_orientation.
+
Lua return values +
Python synopsissimIK.setElementConstraints(int environmentHandle,int ikGroupHandle,int elementHandle,int constraints)
See alsosimIK.createEnvironment, simIK.getElementConstraints, simIK.getGroupHandle, simIK.getObjectHandle
+
+ +

+simIK.setElementFlags

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets various flags of an IK element.
Lua synopsissimIK.setElementFlags(int environmentHandle,int ikGroupHandle,int elementHandle,int flags)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
elementHandle: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).
+
flags: bit-coded flags: bit0 set (1)=the enabled state of the IK element.
+
Lua return values +
Python synopsissimIK.setElementFlags(int environmentHandle,int ikGroupHandle,int elementHandle,int flags)
See alsosimIK.createEnvironment, simIK.getElementFlags, simIK.getGroupHandle, simIK.getObjectHandle
+
+ +

+simIK.setElementPrecision

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the desired precision of an IK element.
Lua synopsissimIK.setElementPrecision(int environmentHandle,int ikGroupHandle,int elementHandle,float[2] precision)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
elementHandle: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).
+
precision: a table with two values for the linear and angular precision.
+
Lua return values +
Python synopsissimIK.setElementPrecision(int environmentHandle,int ikGroupHandle,int elementHandle,list precision)
See alsosimIK.createEnvironment, simIK.getElementPrecision, simIK.getGroupHandle, simIK.getObjectHandle
+
+ +

+simIK.setElementWeights

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the desired linear and angular resolution weights of an IK element.
Lua synopsissimIK.setElementWeights(int environmentHandle,int ikGroupHandle,int elementHandle,float[3] weights)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
elementHandle: the IK element handle, or X, where X=handleOfTipDummy+simIK.handleflag_tipdummy (if several IK elements with the same tip dummy exist, then the first encountered will be selected).
+
weights: a table with three values for the linear, angular and overall resolution weight.
+
Lua return values +
Python synopsissimIK.setElementWeights(int environmentHandle,int ikGroupHandle,int elementHandle,list weights)
See alsosimIK.createEnvironment, simIK.getElementWeights, simIK.getGroupHandle, simIK.getObjectHandle
+
+ +

+simIK.setGroupCalculation

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets calculation properties for an IK group.
Lua synopsissimIK.setGroupCalculation(int environmentHandle,int ikGroupHandle,int method,float damping,float maxIterations)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
method: the resolution method. Possible values are simIK.method_pseudo_inverse (features a tiny bit of hard-coded damping), simIK.method_undamped_pseudo_inverse, simIK.method_damped_least_squares and simIK.method_jacobian_transpose.
+
damping: the damping, in case the resolution method is simIK.method_damped_least_squares.
+
maxIterations: the maximum number of iterations.
+
Lua return values +
Python synopsissimIK.setGroupCalculation(int environmentHandle,int ikGroupHandle,int method,float damping,float maxIterations)
See alsosimIK.createEnvironment, simIK.getGroupCalculation, simIK.getGroupHandle
+
+ +

+simIK.setGroupFlags

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets flags of an IK group.
Lua synopsissimIK.setGroupFlags(int environmentHandle,int ikGroupHandle,int flags)
Lua arguments +
environmentHandle: the handle of the environment.
+
ikGroupHandle: the handle of the IK group.
+
flags: the flags of the IK group, bit-coded:
+
simIK.group_enabled: the group's enabled state
+
simIK.group_ignoremaxsteps: the joints' max step sizes are ignored. Otherwise, when detected, an interpolation factor (originally at 1.0) is successively divided by 2.0 until the max. step sizes are respected
+
simIK.group_restoreonbadlintol: the IK world state is left untouched if the linear precision is not reached
+
simIK.group_restoreonbadangtol: the IK world state is left untouched if the angular precision is not reached
+
simIK.group_avoidlimits: joint limits are actively avoided
+
simIK.group_stoponlimithit: calculation ends when a joint limit is hit
+
Lua return values +
Python synopsissimIK.setGroupFlags(int environmentHandle,int ikGroupHandle,int flags)
See alsosimIK.createEnvironment, simIK.getGroupFlags, simIK.getGroupHandle
+
+ +

+simIK.setJointDependency

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets information about a possible dependent joint.
Lua synopsissimIK.setJointDependency(int environmentHandle,int jointHandle,int depJointHandle,float offset=0,float mult=1,func callback=nil)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
depJointHandle: the handle of the joint, this joint is dependent of. -1 to disable.
+
offset: the offset. We have linear/angular joint position = dependency linear/angular joint position * mult + offset
+
mult: the multiplication factor. We have linear/angular joint position = dependency linear/angular joint position * mult + offset
+
callback: an optional callback that allows to provide a custom dependency function:
+
float result=callbackFunction(int ikEnv,int slaveJointHandle,float masterJointPosition)
+
Lua return values +
Python synopsissimIK.setJointDependency(int environmentHandle,int jointHandle,int depJointHandle,float offset=0,float mult=1,string callback=None)
See alsosimIK.createEnvironment, simIK.getJointDependency, simIK.getObjectHandle
+
+ +

+simIK.setJointWeight

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the IK weight of a joint, i.e. the weight it has during IK resolution.
Lua synopsissimIK.setJointWeight(int environmentHandle,int jointHandle,float weight)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
weight: the IK weight.
+
Lua return values +
Python synopsissimIK.setJointWeight(int environmentHandle,int jointHandle,float weight)
See alsosimIK.createEnvironment, simIK.getJointWeight, simIK.getObjectHandle
+
+ +

+simIK.setJointLimitMargin

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the limit margin of a joint, i.e. the threshold that will be used to counteract on joint limit violation during IK resolution, if the appropriate IK group flag was set
Lua synopsissimIK.setJointLimitMargin(int environmentHandle,int jointHandle,float margin)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
margin: the margin
+
Lua return values +
Python synopsissimIK.setJointLimitMargin(int environmentHandle,int jointHandle,float margin)
See alsosimIK.createEnvironment, simIK.getJointLimitMargin, simIK.getGroupFlags
+
+ +

+simIK.setJointInterval

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the joint limits.
Lua synopsissimIK.setJointInterval(int environmentHandle,int jointHandle,bool cyclic,float[2] interval={})
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
cyclic: whether the joint is cyclic (has no limits). Only revolute joints can be cyclic.
+
interval: a table with two values: the joint lower limit, and the joint range (i.e. joint upper limit = joint lower limit + joint range)
+
Lua return values +
Python synopsissimIK.setJointInterval(int environmentHandle,int jointHandle,bool cyclic,list interval=[])
See alsosimIK.createEnvironment, simIK.getJointInterval, simIK.getObjectHandle
+
+ +

+simIK.setJointMaxStepSize

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the maximum step size of a joint.
Lua synopsissimIK.setJointMaxStepSize(int environmentHandle,int jointHandle,float stepSize)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
stepSize: the maximum step size.
+
Lua return values +
Python synopsissimIK.setJointMaxStepSize(int environmentHandle,int jointHandle,float stepSize)
See alsosimIK.createEnvironment, simIK.getJointMaxStepSize, simIK.getObjectHandle
+
+ +

+simIK.setJointMode

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the joint mode.
Lua synopsissimIK.setJointMode(int environmentHandle,int jointHandle,int jointMode)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
jointMode: the joint mode. Allowed values are: simIK.jointmode_passive, simIK.jointmode_ik
+
Lua return values +
Python synopsissimIK.setJointMode(int environmentHandle,int jointHandle,int jointMode)
See alsosimIK.createEnvironment, simIK.getJointMode, simIK.getObjectHandle
+
+ +

+simIK.setJointPosition

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the position (linear or angular) of a joint.
Lua synopsissimIK.setJointPosition(int environmentHandle,int jointHandle,float position)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
position: the position.
+
Lua return values +
Python synopsissimIK.setJointPosition(int environmentHandle,int jointHandle,float position)
See alsosimIK.createEnvironment, simIK.getJointPosition, simIK.setSphericalJointMatrix, simIK.setSphericalJointRotation, simIK.getObjectHandle
+
+ +

+simIK.setJointScrewLead

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the screw lead, in case of a revolute joint.
Lua synopsissimIK.setJointScrewLead(int environmentHandle,int jointHandle,float lead)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
lead: the screw lead of the joint. A lead value of zero represents a revolute joint, a value different from zero represents a screw.
+
Lua return values +
Python synopsissimIK.setJointScrewLead(int environmentHandle,int jointHandle,float lead)
See alsosimIK.createEnvironment, simIK.getJointScrewLead, simIK.getObjectHandle
+
+ +

+simIK.setLinkedDummy

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionDeprecated. Use simIK.setTargetDummy instead
Lua synopsissimIK.setLinkedDummy(int environmentHandle,int dummyHandle,int linkedDummyHandle)
Lua arguments +
environmentHandle: the handle of the environment.
+
dummyHandle: the handle of the dummy object.
+
linkedDummyHandle: the handle of the dummy object to be linked, or -1 to detach this dummy object from a linked dummy object.
+
Lua return values +
Python synopsissimIK.setLinkedDummy(int environmentHandle,int dummyHandle,int linkedDummyHandle)
See alsosimIK.createEnvironment, simIK.getLinkedDummy, simIK.getObjectHandle
+
+ +

+simIK.setObjectMatrix

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the transformation matrix of an object. If the object is a joint object, the matrix does not include the joint's intrinsic transformation.
Lua synopsissimIK.setObjectMatrix(int environmentHandle,int objectHandle,float[12] matrix,int relativeToObjectHandle=simIK.handle_world)
Lua arguments +
environmentHandle: the handle of the environment.
+
objectHandle: the handle of the object.
+
matrix: a table of 12 values representing the transformation matrix (the last row of the 4x4 matrix (0,0,0,1) is omitted)
+
relativeToObjectHandle: the handle of an object relative to which the matrix is expressed. Otherwise, specify simIK.handle_world if you specify the absolute matrix, or simIK.handle_parent if you specify the matrix relative to the parent object.
+
Lua return values +
Python synopsissimIK.setObjectMatrix(int environmentHandle,int objectHandle,list matrix,int relativeToObjectHandle=simIK.handle_world)
See alsosimIK.createEnvironment, simIK.getObjectMatrix, simIK.setObjectPose, simIK.setObjectTransformation, simIK.setJointPosition, simIK.getObjectHandle
+
+ +

+simIK.setObjectParent

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the parent of an object.
Lua synopsissimIK.setObjectParent(int environmentHandle,int objectHandle,int parentObjectHandle, bool keepInPlace=true)
Lua arguments +
environmentHandle: the handle of the environment.
+
objectHandle: the handle of the object.
+
parentObjectHandle: the desired parent object, set -1 for no parent.
+
keepInPlace: if true, the object will stay in place, otherwise, it will keep its local transformation.
+
Lua return values +
Python synopsissimIK.setObjectParent(int environmentHandle,int objectHandle,int parentObjectHandle, bool keepInPlace=True)
See alsosimIK.createEnvironment, simIK.getObjectParent, simIK.getObjectHandle
+
+ +

+simIK.setObjectPose

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the pose (position and quaternion) of an object. If the object is a joint object, the pose does not include the joint's intrinsic transformation.
Lua synopsissimIK.setObjectPose(int environmentHandle,int objectHandle,float[7] pose,int relativeToObjectHandle=simIK.handle_world)
Lua arguments +
environmentHandle: the handle of the environment.
+
objectHandle: the handle of the object.
+
pose: the position and quaternion (x,y,z,qx,qy,qz,qw).
+
relativeToObjectHandle: the handle of an object relative to which the pose is expressed. Otherwise, specify simIK.handle_world if you specify the absolute pose, or simIK.handle_parent if you specify the pose relative to the parent object.
+
Lua return values +
Python synopsissimIK.setObjectPose(int environmentHandle,int objectHandle,list pose,int relativeToObjectHandle=simIK.handle_world)
See alsosimIK.createEnvironment, simIK.getObjectPose, simIK.setObjectTransformation, simIK.setObjectMatrix, simIK.setJointPosition, simIK.getObjectHandle
+
+ + +

+simIK.setObjectTransformation

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the transformation (position and quaternion/Euler angles) of an object. If the object is a joint object, the transformation does not include the joint's intrinsic transformation.
Lua synopsissimIK.setObjectTransformation(int environmentHandle,int objectHandle,float[3] position,float[] eulerOrQuaternion,int relativeToObjectHandle=simIK.handle_world)
Lua arguments +
environmentHandle: the handle of the environment.
+
objectHandle: the handle of the object.
+
position: the position component of the transformation.
+
eulerOrQuaternion: the orientation component of the transformation. If 3 values are specified, then they will be interpreted as Euler angles (alpha,beta,gamma). If 4 values are specified, they will be interpreted as quaternion values (x,y,z,w).
+
relativeToObjectHandle: the handle of an object relative to which the transformation is expressed. Otherwise, specify simIK.handle_world if you specify the absolute transformation, or simIK.handle_parent if you specify the transformation relative to the parent object.
+
Lua return values +
Python synopsissimIK.setObjectTransformation(int environmentHandle,int objectHandle,list position,list eulerOrQuaternion,int relativeToObjectHandle=simIK.handle_world)
See alsosimIK.createEnvironment, simIK.getObjectTransformation, simIK.setObjectPose, simIK.setObjectMatrix, simIK.setJointPosition, simIK.getObjectHandle
+
+ + +

+simIK.setSphericalJointMatrix

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the rotation transformation matrix of a spherical joint.
Lua synopsissimIK.setSphericalJointMatrix(int environmentHandle,int jointHandle,float[12] matrix)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
matrix: a table of 12 values representing the transformation matrix (the last row of the 4x4 matrix (0,0,0,1) is omitted). The translation part in the matrix will be ignored.
+
Lua return values +
Python synopsissimIK.setSphericalJointMatrix(int environmentHandle,int jointHandle,list matrix)
See alsosimIK.createEnvironment, simIK.getJointMatrix, simIK.setJointPosition, simIK.setSphericalJointRotation, simIK.getObjectHandle
+
+ +

+simIK.setSphericalJointRotation

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionSets the rotation transformation of a spherical joint.
Lua synopsissimIK.setSphericalJointRotation(int environmentHandle,int jointHandle,float[] eulerOrQuaternion)
Lua arguments +
environmentHandle: the handle of the environment.
+
jointHandle: the handle of the joint.
+
eulerOrQuaternion: the rotation transformation to apply. If 3 values are specified, they will be interpreted as Euler angles (alpha,beta,gamma). If 4 values are specified, they will be interpreted as quaternion values (x,y,z,w).
+
Lua return values +
Python synopsissimIK.setSphericalJointRotation(int environmentHandle,int jointHandle,list eulerOrQuaternion)
See alsosimIK.createEnvironment, simIK.getJointTransformation, simIK.setSphericalJointMatrix, simIK.setJointPosition, simIK.getObjectHandle
+
+ + + +

+simIK.setTargetDummy

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionAssociates a tip dummy with a target dummy, or removes that association. If the tip dummy is already associated with another target dummy, then first remove that association before setting another one
Lua synopsissimIK.setTargetDummy(int environmentHandle,int tipDummyHandle,int targetDummyHandle)
Lua arguments +
environmentHandle: the handle of the environment
+
tipDummyHandle: the handle of the tip dummy
+
targetdDummyHandle: the handle of the new target dummy, or -1 to remove a previous target dummy association from the tip dummy
+
Lua return values +
Python synopsissimIK.setTargetDummy(int environmentHandle,int tipDummyHandle,int targetDummyHandle)
See alsosimIK.createEnvironment, simIK.getTargetDummy, simIK.getObjectHandle
+
+ + + +

+simIK.syncToSim

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionConvenience function to apply inverse kinematic values computed in the IK world, to the scene. Use together with simIK.addElementFromScene.
Lua synopsissimIK.syncToSim(int environmentHandle,int[] ikGroups)
Lua arguments +
environmentHandle: the handle of the IK environment
+
ikGroups: the handles of one or several IK groups
+
Lua return values +
Python synopsissimIK.syncToSim(int environmentHandle,int[] ikGroups)
See alsosimIK.addElementFromScene,simIK.syncFromSim
+
+ + +

+simIK.syncFromSim

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionConvenience function to apply the scene state to its ik environment counterpart. Use together with simIK.addElementFromScene.
Lua synopsissimIK.syncFromSim(int environmentHandle,int[] ikGroups)
Lua arguments +
environmentHandle: the handle of the IK environment
+
ikGroups: the handle of one or several IK groups
+
Lua return values +
Python synopsissimIK.syncFromSim(int environmentHandle,int[] ikGroups)
See alsosimIK.addElementFromScene,simIK.syncToSim
+
+ + + + + + +
+ + + diff --git a/c_transpiler/tests/test_ir.py b/c_transpiler/tests/test_ir.py index cf46fb3..5bd4816 100644 --- a/c_transpiler/tests/test_ir.py +++ b/c_transpiler/tests/test_ir.py @@ -5,9 +5,6 @@ from ir_transpiler import FunctionAssign, Arg, TypeNode from ir_transpiler import ir_to_cpp, ir_to_string, ir_to_macro_request_rust, ir_to_py from cpp_token import TokenType -from scanner import Scanner -from stream import StringStream -from parser import parser class IrTestCase(unittest.TestCase): @@ -222,10 +219,10 @@ def test_ir_to_macro_request_rust(self): wait_ir, get_vision_sensor_depth_buffer_if] expected_strings = [ - '(test_switch_thread,"switchThread"->())', - '(test_unpack_table,"unpackTable",(buffer:Vec)->serde_json::Value)', - '(test_wait,"wait",(dt:f64),opt(simulation_time:bool)->f64)', - '(test_get_vision_sensor_depth_buffer,"getVisionSensorDepthBuffer",(sensor_handle:i64),opt(pos:Vec,size:Vec)->(Vec,Vec))' + '(r#""#,test_switch_thread,"switchThread"->())', + '(r#""#,test_unpack_table,"unpackTable",(buffer:Vec)->serde_json::Value)', + '(r#""#,test_wait,"wait",(dt:f64),opt(simulation_time:bool)->f64)', + '(r#""#,test_get_vision_sensor_depth_buffer,"getVisionSensorDepthBuffer",(sensor_handle:i64),opt(pos:Vec,size:Vec)->(Vec,Vec))' ] result = [ir_to_macro_request_rust( ir, api_name='test') for ir in inputs] diff --git a/c_transpiler/tests/test_scanner.py b/c_transpiler/tests/test_scanner.py index 6797ab4..5d34e68 100644 --- a/c_transpiler/tests/test_scanner.py +++ b/c_transpiler/tests/test_scanner.py @@ -2,7 +2,7 @@ from scanner.scanner import Scanner -from stream import Stream, StringStream +from stream import StringStream from cpp_token import TokenType, Token diff --git a/c_transpiler/tests/test_scrapping_reference.py b/c_transpiler/tests/test_scrapping_reference.py new file mode 100644 index 0000000..8034164 --- /dev/null +++ b/c_transpiler/tests/test_scrapping_reference.py @@ -0,0 +1,54 @@ +import unittest +from pathlib import Path +from reference_scraping import reference_scraping + + +TEST_ASSETS_DIR = Path(__file__).parent/'test_assets' + + +class ReferenceScrapingTestCase(unittest.TestCase): + + def test_scraping_regular_api(self): + + descriptions = [ + 'Closes current scene, and switches to another open scene.\n If there is no other open scene, a new scene is then created. Can only be called\n from an add-on, or from the sanbox script, when called\n from Lua. See also sim.loadScene and sim.saveScene.', + 'Loads a previously saved scene.See also sim.saveScene, sim.loadModel, simCloseScene and sim.setBoolParam with sim.boolparam_scene_and_model_load_messages.\n ' + ] + + function_names = ['closeScene', 'loadScene'] + + result = reference_scraping.scraping_regular_api(function_names, + coppeliasim_dir=TEST_ASSETS_DIR) + + for name, description in zip(function_names, descriptions): + self.assertEqual(result[name], description) + + def test_scraping_sim_ik(self): + + descriptions = [ + 'Adds a new IK element to an IK group.', + 'Sets flags of an IK group.' + ] + + function_names = ['addElement', 'setGroupFlags'] + + result = reference_scraping.scraping_sim_ik_api(function_names, + TEST_ASSETS_DIR) + + for name, description in zip(function_names, descriptions): + self.assertEqual(result[name], description) + + def test_get_sim_description(self): + description = reference_scraping.scraping_regular_api_description( + TEST_ASSETS_DIR) + + self.assertEqual(description, 'The list of API functions below allows you to access many CoppeliaSim parameters. There are however too many parameters in CoppeliaSim to have a specific API function for each one of them. Auxiliary parameters can be accessed via a set of given functions that use object parameter IDs. Refer also to the global parameter IDs.\nAll units going to, or coming from the API are in meters, kilograms, seconds and radians or a combination of those (unless otherwise explicitly indicated).\n') + + def test_get_sim_ik_description(self): + description = reference_scraping.scraping_sim_ik_api_description( + TEST_ASSETS_DIR) + + self.assertEqual( + description, 'API functions for creating kinematics tasks. All units, unless otherwise indicated, are specified in meters and radians.') + + pass